私が必要としているのは次のようなものです。
var MyEventPointer = $('body').on('MyCustomEvent','.myClass',function(e){
// do something
});
var MyEventPointer2 = $('body').on('MyCustomEvent','.myClass',function(e){
// do something
});
$('body').unbindByEventID(MyEventPointer);
MyEventPointer
特定のイベントハンドラーへのポインターです。2つのイベントハンドラーはまったく同じですが、作成時に返される一意の識別子が異なるため、バインドされていないのは1つだけです。これは、タイマーへの参照を変数に格納し、後でその参照を使用してタイマーを再び無効にする方法と同じように機能するはずです。Jqueryがイベントの一意のIDを保存していることは知っていますが、それらにアクセスできるかどうかはわかりません。これはJqueryで行うことができますか、それとも自分のソリューションを使用する必要がありますか?の現在のインスタンスと将来のインスタンスの両方が含まれるように、イベントを委任する必要があります.myClass
。
アップデート:
サンプルコード:
<tr><td><input class="MyWidget" /></td></tr>
<tr><td><input class="MyWidget" /></td></tr>
<tr><td><input class="MyWidget" /></td></tr>
<!-- Repeats n times, rows are added and deleted dynamically -->
JavaScript:
// Creation
$('.MyWidget').MyWidget();
// The plugin
$.fn.MyWidget = function (options) {
return this.each(function () {
new ATK.MyWidget(this, options);
});
};
// The widget class
ATK.MyWidget = function (element, options) {
// constructor
}
ATK.MyWidget.prototype = new ATK.ParentWidget();
ATK.MyWidget.prototype.SetFilterEvent = function(Selector) {
var base = this;
$('body').on('MyCustomEvent',Selector,function(e){base.eMyCustomEvent(e,this)});
}
ATK.MyWidget.prototype.eMyCustomEvent = function(e,eventThis) {
console.log(this.protected.$element.attr('id')+' has detected that '+$(eventThis).attr('id')+' has changed.');
}