droppable和draggable有類似的地方,不過區別點在於前者著重於將元素放進某個容器中,而後者則著重於可拖拽(雖然可能一些效果兩者都可以實現)。而且透過查看easyloader原始碼可知道,droppable並不依賴draggable。
所謂放置,就是將一個物體放入一個物體內,當然對於easyui來說觸發各種效果是必不可少的,同時這個組件也不會依賴於其他組件。
Droppable的載入方式
1,class 載入 一直不太喜歡class方式的載入 浪費一個位置,程式碼一多還看著亂七八糟的。
程式碼如下:
<p id='dd' class="easyui-droppable" data-options="accept:'#box,#pox'"></p>
2,js 載入呼叫
$("#box").droppable({ accept:'#pox', //将元素pox 放置在元素box中 });
Droppable的屬性
1,ceptpable
預設為null,決定哪些元素被接受,也就是那個元素能被放置
$("#box").droppable({ accept:'#pox', //将元素pox 放置在元素box中 });
2,deisabled
默認為false 如果為true,則禁止為true,則禁止為true放置
$("#box").droppable({ accept:'#pox', //将元素pox 放置在元素box中 disabled : true , //禁止放置 });
Droppable 事件清單
1,onDragEnter 在被拖曳元素到放置區域內的時候觸發被拖曳元素經過放置區域的時候觸發
3,onDragLeave 在被拖曳元素離開放置區域的時候觸發
4,onDrop 在被拖曳元素放入到放置區的時候觸發
onDragEnter /onDragOver/onDragLeave/onDrop: function (e,source){ //source 参数获取DOM元素 }
1,options 傳回屬性物件
2,enable,disable 和上面屬性的功能是一樣的 分別是啟用和禁止放置console.log($('#box').droppable('options'));
$('#box').droppable('enable/disable')
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Accept a Drop - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.6/themes/metro/easyui.css"> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.6/themes/icon.css"> <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.6/demo/demo.css"> <script type="text/javascript" src="jquery-easyui-1.3.6/jquery.min.js"></script> <script type="text/javascript" src="jquery-easyui-1.3.6/jquery.easyui.min.js"></script> </head> <body> <div style="margin:20px 0;"></div> <div id="source" style="border:1px solid #ccc;width:300px;height:400px;float:left;margin:5px;"> drag me! <div id="d1" class="drag">Drag 1</div> <div id="d2" class="drag">Drag 2</div> <div id="d3" class="drag">Drag 3</div> </div> <div id="target" style="border:1px solid #ccc;width:300px;height:400px;float:left;margin:5px;"> drop here! </div> <div style="clear:both"></div> <style type="text/css"> .drag{ width:100px; height:50px; padding:10px; margin:5px; border:1px solid #ccc; background:#AACCFF; } .dp{ opacity:0.5; filter:alpha(opacity=50); } .over{ background:#FBEC88; } </style> <script> /** 使用js方式将元素设置为可draggable的 */ $(function(){ $('.drag').draggable({ proxy:'clone', revert:true, cursor:'pointer', onStartDrag:function(){ $(this).draggable('options').cursor='not-allowed';//设置鼠标样式为不可拖动 $(this).draggable('proxy').addClass('dp');//设置样式 }, onStopDrag:function(){ $(this).draggable('options').cursor='auto';//设置鼠标 } }); //将容易置为droppable并且可接受元素 $('#target').droppable({ accept:'#d1,#d3', onDragEnter:function(e,source){//拖入 $(source).draggable('options').cursor='auto'; $(source).draggable('proxy').css('border','1px solid red'); $(this).addClass('over'); }, onDragLeave:function(e,source){//脱离 $(source).draggable('options').cursor='not-allowed'; $(source).draggable('proxy').css('border','1px solid #ccc'); $(this).removeClass('over'); }, onDrop:function(e,source){//放下 $(this).append(source) $(this).removeClass('over'); alert("我被放下了"); } , //onDropOver当元素被拖出(成功放入到某个容器)的时候触发 onDragOver:function(e,source){ alert("我被拖出去了");//先于alert("我被放下了");执行,表明其触发在onDrop之前。 } }); }); </script> </body> </html>
效果位址:
http://www.jeasyui.com/demo/main/index.php?plugin=Droppable&theme=default&dir=ltr&pitem=,jQuery EasyUI影片教學!