/ / .on()をjqueryプラグインに使用する最良の方法は? -jquery、ajax、dom、bind、handler

jqueryプラグインに.on()を使用する最も良い方法は? - jquery、ajax、dom、bind、ハンドラ

私のウェブサイト用に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()は非推奨です。従来のバインドd.click()は、ajaxクエリを使用してHTMLを動的に変更すると機能しません。

2番目の引数で「#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でパラメータを渡したくありません。それは本当に良い方法ではありません」。

どうもありがとう

回答:

回答№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で削除されました