2

Web サイト用の jquery プラグインを作成したいと考えています。

イベントを作成しますが、ハンドラーを処理する最善の方法を知りたいです。

私の心配は、ajax クエリが原因で DOM html が変更されたときに、イベントをバインドしたままにしておく必要があることです。いくつかの調査の後、最善の方法は、jquery で利用可能な .on() 関数を使用することであることがわかりました。

これが私が試したことです:

jQuery.fn.wtpicker = function ( params ) {
    var currentSelector = $(this);

    $(document).on('click', currentSelector, function(event) {
        alert('test');
    });

    return this;
}

しかし、それはうまくいきません...

live() は非推奨です。ajax クエリを使用して HTML を動的に変更すると、クラシック バインド d.click() が機能しません。

第二引数に「#whatever div.myclass」のように、セレクターのdomを指定することになっています。しかし、それはプラグインなので、私はそれを知ることができません。

それを機能させるために、私は書くことを余儀なくされています:

jQuery.fn.wtpicker = function ( params ) {
    var currentSelector = $(this);

    $(document).on('click', '#whatever div.myclass' , function(event) {
        alert('test');
    });

    return this;
}

しかし、別のセレクターが必要ない場合、それはあまり効率的ではありません。

プラグイン自体で使用されたウィッチ DOM セレクターを取得することは可能ですか? 私はdomでパラメータを渡したくありません。それは本当に良い方法ではありません。

どうもありがとう

4

1 に答える 1

1

選択した要素ではなくセレクターが必要な場合は、試してください.selector

jQuery.fn.wtpicker = function ( params ) {
    var currentSelector = this.selector;

    $(document).on('click', currentSelector, function(event) {
        alert('test');
    });

    return this;
}

以下のコメントから.selector、有効なセレクターを提供するために信頼することはできません。また、jQuery 1.7 で廃止され、jQuery 2.0 で削除されました。

于 2013-04-14T17:05:30.673 に答える