我有这段代码 http://jsfiddle.net/THnan/
但每次我对一个元素进行排序时我想检查有多少个孩子有目标div,如果他们超过N个代码,则应该取目标div的最后一个子节点并将其放在start div的BEGINNING处(即使最后一个孩子是新的排序元素。)
我希望我说清楚。 我怎样才能实现这种行为?
提前谢谢!
答案 0 :(得分:0)
嗯,使用sortable的receive
事件,这是一个“天真的”(如采用第一种跳出来的方法)版本。使用N
表示两边的最大元素数。
$(function(){
var N = 4;
$("#left-side, #right-side").sortable({
axis: "x",
connectWith: ".droppable",
receive: reSort
})
.disableSelection();
// Called when a sortable item has been received, see above
function reSort(event, ui)
{
var other, children;
children = $(this).children();
if (children.length > N)
{
// Find the other sortable panel, based on id.
// There are other ways, depending on the HTML.
other = ($(this).attr("id") == "left-side")
? $("#right-side")
: $("#left-side");
// Insert last child before first child of other:
children.last().insertBefore(other.children().first());
}
}
});
如果依靠侧面,我会使用if / else代替:
if (children.length > N)
{
if ($(this).attr("id") == "left-side")
{
children.last().insertBefore($("#right-side").children().first());
}
else
{
children.first().insertAfter($("#left-side").children().last());
}
}