2010-07-12 25 views
2

我有兩個sortables是直的UI元素,每個至少在LI元素和多達十個,整理像這樣:jQuery:取消最頂層LI元素的排序?

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
}).disableSelection(); 

我希望每個UL擁有最頂部LI元素讀「標題'。我不希望這個LI元素是可拖動的,我不希望它是可排序的;它實際上是UL的標題塊。 sortable()調用中的'cancel'選項禁止用戶拖動它,但用戶仍然可以上下拖動列表中的其他LI元素,從而移除最頂部的LI。我想阻止這一點。

本質上:我希望LI項目2-N是可排序的,而1個是固定的。

想法?

回答

1

那麼,一點點毅力woulda幫助。只是改變了排序調用看起來像這樣:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: '.sortable-item' 
}); 

然後給了我想要排序的「排序項」級每個L1。瞧。

2

我沒有看到你已經想出的解決方案的問題,但我想我會提到,使用「:不」和「:第一」選擇器的組合,你可以更直接地獲得您正在尋找理想的結果:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: 'li:not(:first)' 
}); 

另外,還可以使用「GT」選擇指定一個更大的索引的所有列表項比0:

$(".sortable").sortable({ 
    connectWith: ".sortable", 
    cancel: '.no-drag', 
    items: 'li:gt(0)' 
}); 

我敢肯定有還有很多其他方法可以解決這個問題。