这是我想要实现的目标 - 我在可排序列表(#sortable2
)中有七个列表项,我将其拖放到一个空的可排序列表(#sortable1
)中。
我想计算新的可排序列表(#sortable1
)中的元素数量,并显示一条警告,告诉用户当前的项目数。我希望这可以在项目被移除时工作。
这是我的HTML:
<ul id="sortable2" class="dropfalse">
<li id="1">Section 1</li>
<li id="2">Section 2</li>
<li id="3">Section 3</li>
<li id="4">Section 4</li>
<li id="5">Section 5</li>
<li id="6">Section 6</li>
<li id="7">Section 7</li>
</ul>
<ul id="sortable1" class="droptrue">
</ul>
和jQuery:
$("#sortable1 li").each(function() {
var elem = $(this);
// I have just added one example here (if two added) for brevity
if (elem.children("li").length = 2) {
alert('There are two elements');
}
});
答案 0 :(得分:1)
你需要在droppable的drop
事件上运行它 - 假设jQueryUI可以删除,这样的事情会起作用:
$('#sortable1').droppable({
drop: function(event, ui) {
var liCount = $("#sortable1 li").length;
// do something with liCount...
}
});
答案 1 :(得分:0)
两个主要问题是:
在计算元素数量时使用赋值而不是等式
计算li元素的子元素而不是ul元素 正确的代码:
$("#sortable1").each(function() {
var elem = $(this);
// I have just added one example here (if two added) for brevity
if (elem.children("li").length == 2) {
alert('There are two elements');
}
});
答案 2 :(得分:0)
您应该使用receive
和remove
事件 - 如Sortable API中所述。
Here's a working example in jsfiddle以及此处的示例代码:
function addRemoveHandler(event, ui) {
alert("Number of items in sortable1: " + $(this).find("li").length);
}
$( "#sortable2" ).sortable({
connectWith: "ul"
});
$( "#sortable1" ).sortable({
connectWith: "ul",
receive: addRemoveHandler,
remove: addRemoveHandler
});