我需要的是这样的:
var MyEventPointer = $('body').on('MyCustomEvent','.myClass',function(e){
// do something
});
var MyEventPointer2 = $('body').on('MyCustomEvent','.myClass',function(e){
// do something
});
$('body').unbindByEventID(MyEventPointer);
MyEventPointer
是指向特定事件处理程序的指针。尽管这两个事件处理程序完全相同,但只有一个是未绑定的,因为它们具有不同的唯一标识符,在创建时返回。这应该像我可以在变量中存储对计时器的引用并稍后使用它的引用再次禁用计时器的方式一样工作。我知道 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.');
}