絶対に一般的な並べ替え可能なケース:
<script>
$(function() {
$("#sortable").sortable();
});
</script>
<ul id="sortable">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
問題。ある条件でアイテムのドラッグをキャンセルする必要があり、 Andrew Whitaker の良いアドバイスがありますが、そのアプローチjquery-ui-draggableでのみ機能し、sortablesでは失敗します。
$("#sortable").sortable({
start: function() {
return false; // will still cause `this.helper is null`
}
});
提案に最適です。
sort
関数コールバックは、ドラッグ可能な( demo )のドラッグと同じようにソートに対して実行します。
$("#sortable").sortable({
sort: function() {
if ($(this).hasClass("cancel")) {
$(this).sortable("cancel");
}
}
});
Sortableには、sortable('cancel')
を使用して呼び出される「キャンセル」機能があります。
ドキュメントから:「現在の並べ替え可能オブジェクトの変更をキャンセルし、現在の並べ替えが開始される前の状態に戻します。」 http://api.jqueryui.com/sortable/#method-cancel を参照してください。
使用例:
$("#sortable").sortable({
stop: function(e, ui) {
if ("I need to cancel this") {
$(ui.sender).sortable('cancel');
}
}
});
false
を fudgey として返すと、物事を動的に並べ替えられないようにするのに最適ですが、並べ替え可能な設定には cancel
option もあり、静的なソート不可も設定します:
$("#sortable").sortable({
// this prevents all buttons, form fields, and elemens
// with the "unsortable" class from being dragged
cancel: ":input, button, .unsortable"
});
試してみてください この例
$( '#list1')。sortable({ connectWith: 'ul' }); $( '#list2')。sortable({ connectWith: 'ul'、 receive:function(ev、ui){ if(ui.item.hasClass( "number")) ui.sender.sortable( "cancel"); } });