私の問題:ソート可能なイベントが発生しました:リスト内の何かをドラッグしたとき、またはリストをソートしたときに発生します。しかし、アイテムをドラッグしたときにのみ関数を開始したいと思います。
私のコード
$(document).ready(function ust()
{
$('#div1').sortable({
out: function(event, ui) { $('#nfo').append('OUT<br />'); }
});
});
これは、outコールバックのデフォルトの動作です。このjqueryuiを参照してください trac ticket
私は「論理的な」行動の概念に本当に同意しません。
「ただし、リストにドラッグしてからマウスを離すと、「out」コールバックがトリガーされることに注意してください(ただし、リストを超えていない場合はトリガーされません)。これは論理的な動作であり、通常の並べ替え可能オブジェクトでも発生します。 「」
BeforeStopを使用してアイテムをインターセプトし、削除します。
receive: function(e, ui) { sortableIn = 1; },
over: function(e, ui) { sortableIn = 1; },
out: function(e, ui) { sortableIn = 0; },
beforeStop: function(e, ui) {
if (sortableIn == 0) {
ui.item.remove();
}
}
(私はもともとGoogleでこれを見つけましたが、リンクを見つけることができなくなりました。そのため、ソースを参照しなかったことをお詫びします。)
他のソリューションは、接続された並べ替え可能なリストでは機能しないようです。そのため、自分のケースに完全に機能する独自のソリューションを投稿しています。これは、要素がソート可能なリストの外にドロップされたときに「drop」イベントをキャプチャする「droppable」プラグインを利用します。
$('#div1').sortable({
....
}).droppable({greedy: true})
$('body').droppable({
drop: function ( event, ui ) {
ui.draggable.remove();
}
});
このアプローチの実際のjsfiddleは次のとおりです。 http://jsfiddle.net/n3pjL/
this.element.find('.ui-sortable-helper').length
を使用して、「ソートアウトイベント」と「ドロップアウトイベント」を区別します。並べ替えるとき、並べ替えられたアイテムのクラスはui-sortable-helperです。ドロップ後、(少なくとも私のスクリプトでは)ソートを再開するまで、他のui-sortable-classはありません。誰かを助けたいと思っています。