2008-12-17 96 views
5

當我嘗試混合這些插件時,我有一個衝突,我在一些演示中基於我的腳本。 問題是,當我拖動同一列表內的東西,它會觸發拖放事件,並將該項目添加到列表的末尾,如果該項目被放入另一個列表中,但不是相同,當我將它放在同一個列表,我想將其插入到那個位置(它的工作原理,如果我禁用下降事件)拖放和可排序的jQuery插件之間的衝突

JS代碼:

$(document).ready(function() { 
     $("#sortlist1").treeview(); 
     $("#sortlist1").droppable({ 
     accept: ".item", 
     drop: function(ev, ui) { 
      alert(ui.sender) 
      $("#sortlist1").append($(ui.draggable));  
     } 
     }); 
     $("#sortlist2").droppable({ 
      accept: ".item", 
      drop: function(ev, ui) { 
       $("#sortlist2").append($(ui.draggable)); 
      } 
      }); 
     $("#sortlist3").droppable({ 
      accept: ".item", 
      drop: function(ev, ui) { 
       $("#sortlist3").append($(ui.draggable)); 
      } 
      }); 
     $('.sortlist').sortable({ 
      handle : '.icono', 
      update : function() { 
       $('input#sortlist').val($('.sortlist').sortable('serialize')); 
      } 
     }); 
    }); 

和HTML:

<ul class="sortlist treeview lista" id="sortlist1"> 
     <li id="listItem_1" class="expandable closed item"> 
      <div class="hitarea closed-hitarea expandable-hitarea lastExpandable-hitarea"> 
       <img src="img/arrow_out.png" class="icono" alt="move" /> 
      </div> 
      numero 1<input type="checkbox" /> 
      <ul class="sortlist" id="sublist"> 
       <li id="sublistItem_1"><img src="img/arrow_out.png" class="icono" alt="move" />numero 1<input type="checkbox" /></li> 
       <li id="sublistItem_2"><img src="img/arrow_out.png" class="icono" alt="move" />numero 2<input type="checkbox" /></li> 
      </ul> 
     </li> 
     <li id="listItem_2" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 2<input type="checkbox" /></li> 
     <li id="listItem_3" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 3<input type="checkbox" /></li> 
     <li id="listItem_4" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 4<input type="checkbox" /></li> 
     <li id="listItem_5" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 5<input type="checkbox" /></li> 
     <li id="listItem_6" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 6<input type="checkbox" /></li> 
     <li id="listItem_7" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 7<input type="checkbox" /></li> 
     <li id="listItem_8" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 8<input type="checkbox" /></li> 
     <li id="listItem_9" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 9<input type="checkbox" /></li> 
     <li id="listItem_10" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 10<input type="checkbox" /></li> 
     <li id="listItem_11" class="item"><img src="img/arrow_out.png" class="icono" alt="move" />numero 11<input type="checkbox" /></li> 
    </ul> 
    <ul class="sortlist treeview lista" id="sortlist2"> 
    </ul> 
    <ul class="sortlist treeview lista" id="sortlist3"> 
    </ul> 

回答

7

你不能混合這些插件:他們處理相同的事件,並且不能合作te在一起。要麼重新考慮你的用戶界面,要麼使用不同的工具。

是否可以做到這一點?當然是。例如,Dojo DnD只允許使用一個組件進行排序和拖放:test_dnd.html(鏈接到調試服務器)。

2

你可以做到這一點,有點。

在每個項目中創建兩個用作手柄的鏈接。

使列表按一個句柄排序。

使列表可以被其他句柄拖動。

現在,當您抓住一個手柄或另一個手柄時,只有一個插件會被激活,事件將被正確處理。

0

如果要將<li>元素從一個列表移動到另一個列表,只需使用sortable()connectWith屬性。只需查看文檔。