私のウェブサイト用に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で削除されました