1

jsFiddleへのリンク:http://jsfiddle.net/k8wYF/1/ 動作中)

var count;
$("#sortable").sortable({
    start : function(){
               count = 0;
            },
    change : function(){
                 count++;                
            },
    stop : function(){
                 alert(count);          
            }
});
$("#sortable").disableSelection();​

単一の変更で

count : 1

しかし、sortableStartでsortableを更新したい

jsFiddleへのリンク:http://jsfiddle.net/k8wYF/ 機能し ていません)

var count;
$("#sortable").sortable({
    start : function(){
               $("#sortable").sortable("refresh");       //refresh sortable
               count = 0;
            },
    change : function(){
                 count++;                
            },
    stop : function(){
                 alert(count);          
            }
});
$("#sortable").disableSelection();​

その後、単一の変更で

count : 16  (multiple times)
4

2 に答える 2

4

ドキュメントから

変化する

このイベントは、並べ替え中にトリガーされますが、DOMの位置が変更された場合に限ります。

更新

並べ替え可能なアイテムを更新します。カスタムは、すべてのソート可能なアイテムのリロードをトリガーし、新しいアイテムが認識されるようにします。

あなたが経験していることは正常です。更新すると、すべてのアイテムが予想される位置に移動し、DOMが変更されるため、毎回変更されたイベントがトリガーされます。

変更イベントにコードを追加する場合は、変更のたびに実行するコードであることを確認してください。

ソートが終了したときにのみ実行するコードを追加する場合は、またはのいずれかに追加しstopますupdate

アップデート

このイベントは、ユーザーが並べ替えを停止し、DOMの位置が変更されたときにトリガーされます。

止まる

このイベントは、並べ替えが停止したときにトリガーされます。

コードの動作に応じて、コードを適切なイベントに追加してください。

于 2012-09-20T10:46:08.533 に答える
2

要素が変更されるたびにChangeが発生するように見えるため、リスト内でliを移動するたびに増分が発生します。私はそれを更新に切り替えて更新を取り出しました、そしてそれは正しいカウントを与えるようです。

var count = 0;

$("#sortable").sortable({
    stop : function(){
                 alert(count);          
    },
    update : function(){
                 count++;  
    }
});

$("#sortable").disableSelection();

更新を元に戻すこともできます。毎回カウントを0にリセットしないでください。これで、十分に追跡できるようになります。しかし、あなたが欲しいものについてのより多くの情報がなければ、私は本当にこれ以上助けることはできません。

于 2012-09-20T10:42:55.687 に答える