0
我有這段代碼 http://jsfiddle.net/THnan/的jQuery可排序:檢查元素的數量和表現
,但每次我排序,我想檢查有多少孩子的元素有目的地格,如果他們更比N代碼應該把目標div的最後一個孩子放在開始div的BEGINNING(即使最後一個孩子是新的排序元素)。
我希望我說清楚。 我該如何實現這種行爲?
預先感謝您!
我有這段代碼 http://jsfiddle.net/THnan/的jQuery可排序:檢查元素的數量和表現
,但每次我排序,我想檢查有多少孩子的元素有目的地格,如果他們更比N代碼應該把目標div的最後一個孩子放在開始div的BEGINNING(即使最後一個孩子是新的排序元素)。
我希望我說清楚。 我該如何實現這種行爲?
預先感謝您!
那麼,這裏是一個「天真」(如在,採取第一種方法,跳到腦海)版本,使用可排序的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());
}
}
這是好事!但看着我認爲,如果在右側排序左側元素並且有太多......右側的第一個變爲左側的最後一個,則會更好。 但我認爲這是可以實現的一個簡單的檢查和一個相反的功能,對吧? 嗯,但我不知道如何獲得目的地ID – 2012-02-05 11:50:03
我可能會重寫它是一個if else,即「如果這是左側」做到這一點,否則做到這一點。請參閱編輯。 – JimmiTh 2012-02-05 12:28:16
非常感謝你! – 2012-02-05 13:03:46