2

onイベントを使用しようとしています。コード

$(".draggable").on("mouseover", function () {
                if (!$(this).data("init")) {
                    $(this).data("init", true).draggable();
                }
});

しかし、上記のコードは機能していません。ドラッグ可能なプラグインは要素には適用されません。onイベントを置き換えると、live動作し始めます。コード

$(".draggable").live("mouseover", function () {
                if (!$(this).data("init")) {
                    $(this).data("init", true).draggable();
                }
});

誰かが私が間違っていることを説明できますか?

4

2 に答える 2

3

動作する場合.live()は、操作している要素がコードの実行時に存在しないことを意味する可能性があります。

これは、コードを実行する前に DOM の準備が整うのを待っていないか、.on代わりに の委任されたバージョンを使用する必要があることを意味します。

$(function() {
    $(document).on("mouseover", ".draggable", function () {
                    if (!$(this).data("init")) {
                        $(this).data("init", true).draggable();
                    }
    });
});

すべての要素documentを含む最も深くネストされたコンテナーのセレクターに置き換える必要があります。.draggable

于 2012-10-04T10:41:00.587 に答える
2

使用するjqueryのバージョンによって異なります

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+  

詳細については、このリンクを参照してください

于 2012-10-04T10:40:35.710 に答える