jquery 和jquery ui搭配,可以实现象igoogle那样的拖拉拽的效果,下面以实例
讲解下。
首先要用到的类库是jquery和jquery ui了。
1
<div id="column1" class="column"> <!-- Widgets code here --> </div> <div id="column2" class="column"> <!-- Widgets code here --> </div>
假设分为两列,要从列1拖拉到列2
2 再细化代码如下
<div id="column1" class="column"> <div class="dragbox" id="item1" > <h2>Handle 1 [url=#] [/url] [url=#] [/url] </h2> <div class="dragbox-content" > <!-- Panel Content Here --> </div> </div> </div> <div id="column2" class="column"> <div class="dragbox" id="item2" > <h2>Handle 2 [url=#] [/url] [url=#] [/url] </h2> <div class="dragbox-content" > <!-- Panel Content Here --> </div> </div> </div>
可以看到,每个DIV层中,都有两个按钮,分别是最大化和删除该层菜单的按钮.
3
现在轮到jquery 出场,代码如下:
$( function(){ $('a.maxmin').click( function(){ $(this).parent().siblings('.dragbox-content').toggle(); }); $('a.delete').click( function(){ var sel = confirm('do you want to delete the widget?'); if(sel) { //del code here } } ); $('.column').sortable({ connectWith: '.column', handle: 'h2', cursor: 'move', placeholder: 'placeholder', forcePlaceholderSize: true, opacity: 0.4, stop: function(event, ui) { $(ui.item).find('h2').click(); var sortorder=''; $('.column').each(function(){ var itemorder=$(this).sortable('toArray'); var columnId=$(this).attr('id'); sortorder+=columnId+'='+itemorder.toString()+'&'; }); sortorder = sortorder.substring(0, sortorder.length - 1) alert('SortOrder: '+sortorder); } }).disableSelection(); });
下面解析下上面的代码:
$('a.maxmin').click 和$('a.delete').click(
分别是用来处理最小化,最大化的情景,而a.delete则是处理删除的情况(这里没进行处理)
之后拖拉是通过jquery的sortable的可拖拉层来进行处理,具体的请参考jquery
手册,这里增加了一个处理,是在拖拉移动时,用alert的方法,显示出在第一列,第2列中,
当前的各列中div层的名称.
4 配套的CSS
.column{ width:49%; margin-right:.5%; min-height:300px; background:#fff; float:left; } .column .dragbox{ margin:5px 2px 20px; background:#fff; position:"relative"; border:1px solid #946553; -moz-border-radius:5px; -webkit-border-radius:5px; } .column .dragbox h2{ margin:0; font-size:12px; background:#946553; color:#fff; border-bottom:1px solid #946553; font-family:Verdana; cursor:move; padding:5px; } .dragbox-content{ background:#fff; min-height:100px; margin:5px; font-family:'Lucida Grande', Verdana; font-size:0.8em; line-height:1.5em; } .column .placeholder{ background: #EED5B7; border:1px dashed #946553; } .opIcons { background-image: url('iconSpirite.gif')!important; background-repeat: no-repeat; float:right; height:13px; width:13px; margin:0px 2px; } .maxmin { background-position:-26px 1px; } .delete { background-position:-269px center; padding-top:1px; }
运行效果参考:http://shivasoft.in/blog/wp-content/uploads/demos/DragAndDrop/index.html#