私は2つのリストを持っている:ドラッグ中にソート可能なアイテムを動的に除外する方法はありますか?
<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>
私はソートされたか、まったくシフトさから2番目のリストの最初と最後のアイテムを防ぎたいです。彼らは永遠にそれらの位置にとどまるべきです。
問題は、プレースホルダシャドウがキャストされると、最後のアイテムが固定された場所から押し出されるということです。
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);
}
}
});
動的通常、ミッドソートをキャンセルクラスによって指定し、国連での並べ替えを落としたかのように、その後、イベントトリガーを持っているものを作り直す方法がある場合、私は思っていました-sortableエリア?
これは元のソート可能な呼び出しとオプションを制御することができず、制限された機能で単純に再キャストすることもできないため、これが必要なアプローチです。
したい' .first'と ' .last'は現在のインデックスにとどまりますか?または、最後の項目である限り、 '.last'は移動することができますか? – Twisty
@Twisty .lastは "shift"することを許されてはいけません。シフトする機会は決してありません。たとえ特定の項目を無効にしても、その例では、ソート可能なjQuery UI APIであっても、インデックスが変更され、特定のドラッグシナリオでシフトされます。 –