2010-11-29 102 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而不是附加到。