3

操作していた要素を削除するイベントがあります。次のようになります。

$('.droppable_slot').droppable({
    drop: function (event,ui) {
        // snipped lines of code
        delete_element(ui.draggable);
    }
);

そして、 a(this).data("draggable") is undefineddelete_element()というエラーが表示されます。これは、ドロップ イベントが機能していた要素を削除するためです (そうあるべきです)。これを回避する方法はわかりませんが、ドロップ イベント (または .droppable() プラグイン) がその関数の実行を終了した後にのみ delete_element() を何らかの方法で実行する方法はわかりませんが、その方法はわかりません。エラーを抑制することはできますが、それは避けたいと思います。

4

1 に答える 1

3

どうやら、ドロップ操作がソース要素をターゲット コンテナーに移動し終える前に、ソース コンテナーをクリアするのが早すぎたようです。

droppableの後にウィジェットによってトリガーされるイベントがないため、ドロップが完了するまでsetTimeout()dropを使用してクリア操作を遅らせることは、適切な回避策になる可能性があります。

$(".droppable_slot").droppable({
    drop: function(event, ui) {
        // Snipped lines of code...
        window.setTimeout(function() {
            delete_element(ui.draggable);
        }, 10);
    }
});

しかし、これは回避策であり、解決策ではありません。ここで実際に必要なのは、drop操作の完了後に発生するイベントです。ウィジェットのstopイベントdraggableが該当する場合があります。ただし、コードをもっと見ないとわかりません。

于 2012-09-05T20:39:14.287 に答える