结构-行为-样式-JqueryUI拖放使用实例(全)

 最近工作中有个需要是动态配置页面,想到之前公司有做过类似的,用的是JqueryUi,所以就看了下它的Api。下面就是我做的小Demo,想用的同学可以参考:

Html:

       <div class="page-component">
            <div class="pct-content">
                <div  class="btn btn-default special"  id="one" >我是可以拖动的对象</div>
            </div>
        </div>
        <div id="dropzone" class="dropzone"></div>

 

 

 Js:

$(
  $("#dropzone").droppable({
                    scope:"tasks",//域,拖动的域与拖放的域要相同才可以放进去
                    accept: ".special",//接受的Drag对象中要有的类
                    tolerance: "fit",//元素在什么情况下才算是拖放进入了Droppable区域,FIT就是全部进入才算进入
                    drop:function(event,ui){//放,这个动作的回调函数
                        var uid = ui.draggable[0].id;
                        var dropzone = $("#dropzone").offset();//得到相对drop区域的绝对位置
                        var oleft = ui.position.left - dropzone.left;//得到相对drop区域的绝对位置
                        var otop  = ui.position.top  - dropzone.top;//得到相对drop区域的绝对位置
                        $(this).append($("<div class='cloneele' style='left:"+oleft+"px;top:"+otop+"px;'><a href='javascript:;' class='close ' ><i class='glyphicon glyphicon-remove'></i></a><img src='images/component/"+uid+".png'/></div>"));
                         $(".cloneele").draggable({
                            opacity: 0.35,
                            revert: function(a){//控制已经拖放进入Drop区域的元素只能在Drop区域拖动
                                var c = $(this)[0];
                                var t = c.style;
                                var d = $("#dropzone")[0];
                                var ch = d.clientHeight;
                                var cw = d.clientWidth;
                                var num_left = parseFloat(t.left.split("px")[0]);
                                var num_top = parseFloat(t.top.split("px")[0]);
                                if(num_left<0 || num_left + c.clientWidth - cw > 0 || num_top < 0 || num_top + c.clientHeight - ch > 0 ){
                                    return true;
                                }else{
                                    return false;
                                }
                            },
                            snap: true,//自动吸附
                            cursor: "pointer"//拖动鼠标指针
                            }).resizable();
                        //删除添加进入Drop区域的元素
                        $(".dropzone .close").bind('click',function(){
                            $(this).parent().remove();
                        });
                        //drag了一次的元素不能再拖动
                        $( "#"+uid ).draggable( "option", "disabled", true );
                    }
                });

                $(".special").draggable({
                    helper:"clone",//设置拖动类型为克隆
                    opacity: 0.35,//拖动对象的透明度
                    snap: true,//自动吸附
                    cursor: "pointer",//拖动鼠标指针
                    appendTo: "body",
                    scope:"tasks"//域,拖动的域与拖放的域要相同才可以放进去
                });  
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洲上牧童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值