2010-11-29 217 views
1

以下是我的代碼。jquery根據條件droppble基於條件

$(document).ready(function(){ 
    $("#container li").draggable({ revert: 'invalid' }); 
    var total = 0; 
    $("#selected ul").droppable({ 
     drop: function(e, ui) { 
      $(ui.draggable).css({ top: 0, left: 0 }).appendTo(this); 
     }, 
     accept: function() { 
      return $("#selected li").length < 5; 
     }, 
     placeholder: true 
    }); 
    $("#container ul").droppable({ 
     drop: function(e, ui) { 
      $(ui.draggable).css({ top: 0, left: 0 }).appendTo(this); 
     }, 
     placeholder: true 
    }); 
}); 

這就像我們可以將LI元素從容器div拖放到選定的div,反之亦然。一切正常,但拖放的LI元素未被排序。我的意思是,如果我從容器中選擇一個LI元素,它總是移動到LI列表的末尾。將元素從選定元素拖放到容器div時也會發生同樣的情況

那麼我應該怎麼做才能讓李可以排序呢?

這裏是鏈接:http://www.jsfiddle.net/nick_craver/HemSU/1/

請需要幫助解決了這一點。 謝謝。

+1

也許你想看看jQuery UI'Sortable':http://jqueryui.com/demos/sortable/ – sje397 2010-11-29 13:30:48

回答

2

爲了什麼你之後(從非常原來的問題不同),.sortable()會更合適,如:

$(document).ready(function(){ 
    function checkMax() { 
     var max = $("#selected li").length >= 5; 
     $("#container ul").sortable("option", { 
      revert: max, connectWith: max ? '' : '#selected ul' 
     }); 
    } 
    $("#selected ul").sortable({ 
     connectWith: '#container ul', 
     receive: checkMax 
    }).disableSelection(); 
    $("#container ul").sortable({ 
     connectWith: '#selected ul', 
     receive: checkMax 
    }).disableSelection(); 
}); 

You can test it out here

+0

最後我得到了正確的。非常感謝尼克。 – gautamlakum 2010-11-29 14:09:07

1

好吧,你追加到UL,這意味着它將最終結束。

如果您希望能夠將其插入列表中的特定位置,您應該可以將LI指定爲可丟棄的,而不是UL。

然後用戶在該LI之前insertBe而不是附加到。