2009-07-27 1 views
4

以下のコードは、開始イベントのソート可能を完全に無効にするわけではありません。並べ替え可能な要素にはui-sortable-disabledui-state-disabledというクラスが追加されますが、機能が無効になるわけではありません。つまり、ソート可能な表示は無効ですが、引き続きドラッグされた項目を受け入れ、有効になっているように動作します。jQueryは開始イベントからソート可能( 'disable')、完全には期待どおりに動作しません。

var assignedSortables; 
var startDrag = function(event, ui) { 
    assignedSortables.each(function() {$(this).sortable('disable');}); 
}; 

var stopDrag = function(event, ui) { 
    assignedSortables.each(function() {$(this).sortable('enable');}); 
}; 

assignedSortables = $(".my-sortable-containers").sortable({ 
    connectWith: '.my-sortable-containers', 
    start: startDrag, 
    stop: stopDrag 
}); 

私はこれをしたい理由は、ドラッグ開始である私はすでに(私は簡単にするためのロジックを取り除か)項目がドラッグされている含まれている他の接続sortablesを無効にする必要がある可能性があるためです。これはバグですか、それとも回避方法がありますか?

答えて

4

私は私が代わりにやったことは

$(".myDraggableContainer").mousedown(functionToDisableTheCorrectSortables).mouseup(functionToEnableSortables); 

それにこれを行うを無効にして有効にするためにマウスダウンを使用してイベントをするMouseUpた、質問をするので、私はjQueryライブラリがこれを「固定」しているかどうかを確認するためにチェックしていません実際には受信ソートを完全に無効にします

+0

こんにちは!私は、オーバーイベントで。プレースホルダーを隠して遊んでいただけですが、視覚的なハックですが、まだアイテムなどを取り除く必要があります。私はあなたの答えを試しましたが、うまく動作しませんでしたか?私のフィドルを見てください:http://jsfiddle.net/tunafish/m32XW/1/私は何が欠けていますか?この例では、アイテムを左からドラッグするときに正しいリストを無効にしたいだけです。 – FFish

+0

今すぐ入手!私はアイテムではなく、リスト上でマウスイベントを行っていました。参照してください:http://jsfiddle.net/tunafish/m32XW/3/今、私はクレイジーハックを得ることができます:-) *バウンティ*歓声 – FFish

+0

素晴らしい、素敵な仕事 – JeremyWeir

7

私はちょうど同じ問題に遭遇しました。私は、ソート可能な開始時に 'refresh'メソッドを呼び出すことによって無効にしたい(接続するために)無効にする接続ソートを得ることができました。私は、内部リストが開始イベントがトリガされる前に、接続と非故障者リストのセットをつかむとを確認していないことを推測

$connectedList.sortable('disable'); 
$(ui.sender).sortable('refresh'); 

だから、あなたのスタートコールバックの内側には、のようなものになるでしょう開始後にそのリストが変更された場合はトリガーされます。

+0

これは私のために働いていましたが、私の場合Angular JSアプリケーションで2つのソート可能なものを使用していましたので、アイテムを受け入れることができないようにする必要があるときに無効にでき、それがなければ、ディセーブルはそれ自身のものでは機能しませんでした。 jQuery 1.8.2を実行しています – likestoski

+0

キーが "source"で "refresh"を呼び出しています* sortable ...直観に反する! –

+0

上記のコードは、接続リストの*** activate ***イベントで使用する必要があります。あなたが並べ替えられたリストを無効にしたときに、***無効化***イベントコールを受け取ることはできません – Amerrnath

関連する問題