我有兩個列表:如何在拖動時動態排除可排序項目?
<ul class='list_one'>
<li>drag me</li>
<li>drag me</li>
</ul>
<ul class='list_two'>
<li class='first'>top most</li>
<li class='middle'>here i am</li>
<li class='middle'>here i am</li>
<li class='last'>least most</li>
</ul>
我想,以防止在第二列表中的第一項和最後一項被排序或在所有移動。他們將永久留在這些職位上。
問題是,當一個佔位符陰影被投射時,最後一個項目被推下,離開了固定點。
jQuery('ul.sq-ranksort-buckets').sortable({
connectsWith: 'ul.sq-ranksort-cards',
items: "li:not(.last_dropped, .suppress_move)",
cancel: ".ui-sortable-disabled, .suppress_move, .do_not_drop, ul.do_not_drop",
over: function(event, ui) {
if(jQuery('.suppress_move.last:visible').length === 0) {
jQuery(this).addClass('do_not_drop');
jQuery(ui.item).addClass('last_dropped');
console.log('should cancel happen: ' + jQuery('.do_not_drop').length);
} else {
jQuery(this).removeClass('do_not_drop');
jQuery(ui.item).removeClass('last_dropped');
console.log('should cancel happen: ' + jQuery('.do_not_drop').length);
}
}
});
我想知道是否有辦法來動態改寫什麼通常取消中旬排序,一類規定,然後,有一個事件觸發,彷彿你已經在未下降的排序分區?
這是我必須採取的方法,因爲我無法控制原始的可排序調用和選項,也不能用有限的功能重新強制轉換它。
所以當'.list_two'有4個項目,第5被拖動,你要'.first'和' .last'保持在他們目前的指標?還是應該讓'.last'只要它仍然是最後一項呢? – Twisty
@Twisty.last不應該被允許「轉移」,它不應該有機會轉移。即使在他們的示例中,即使在禁用某些項目的情況下,即使在可排序的jQuery UI API中,它們的索引也會在某些拖動場景中發生改變和偏移。 –