如何从jquery可排序连接列表中删除重复项?

这是我的jquery可排序代码。 我想在拖动其中的元素后从sortable2和sortable3中删除重复项。 我尝试了很多方法,但我失败了。 请给我一个完整的工作代码,以便我可以在我的脚本上实现它。

   jQuery UI Sortable - Connect lists      #sortable1, #sortable2, #sortable3 { list-style-type: none; margin: 0; padding: 0 0 2.5em; float: left; margin-right: 10px; width: 200px; height: 200px; border: solid 1px black; } #sortable1 li, #sortable2 li, #sortable3 li { margin: 0 5px 5px 5px; padding: 5px; font-size: 1.2em; width: 120px; }   $(function () { $("#sortable2").sortable({}); $("#sortable3").sortable({}); $("#sortable1").sortable({ }); $( "#sortable1 li" ).draggable({ connectToSortable: "#sortable2,#sortable3", helper: "clone", revert: "invalid" }); });    
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5

我在jsFiddle中做了一个例子来解决你的问题,或者我认为你的问题是什么。

测试一下,告诉我这是否是你需要的。

http://jsfiddle.net/jKzWp/16/

我创建了一个函数来测试新项是否已经在列表中,如果是,则从列表中删除该项。

这是js代码:

 $(function () { $("#sortable2").sortable({ receive: function (event, ui) { var pasteItem = checkList("sortable2", $(this).data().uiSortable.currentItem); if (!pasteItem){ $(this).data().uiSortable.currentItem.remove(); } } }); $("#sortable3").sortable({ receive: function (event, ui) { var pasteItem = checkList("sortable3", $(this).data().uiSortable.currentItem); if (!pasteItem){ $(this).data().uiSortable.currentItem.remove(); } } }); $("#sortable1").sortable({ }); $( "#sortable1 li" ).draggable({ connectToSortable: "#sortable2,#sortable3", helper: "clone", revert: "invalid" }); }); function checkList(listName, newItem){ var dupl = false; $("#" + listName + " > li").each(function(){ if ($(this)[0] !== newItem[0]){ if ($(this).html() == newItem.html()){ dupl = true; } } }); return !dupl; } 

祝你好运,干杯