我正在编写自己的小部件,除了destroy方法外,一切正常。似乎所有事件都没有正确解开......
(function($) {
var _super = $.Widget.prototype;
//
$.widget("my.cool", {
_create: function() {
var $self = this, $element = this.widget();
$element.mousedown($self.select);
_super._create.apply(this, arguments);
},
// Destroying widget
destroy: function() {
var $element = this.widget();
$element.unbind(".cool");
_super.destroy.apply(this, arguments);
},
select: function() {
alert("selected");
}
});
}) (jQuery);
测试它:
$("<div>").cool().cool("destroy").trigger("mousedown").data("events")
即使被破坏,我也会显示警报(“已选中”),事件未正确解除绑定,我可以在事件数据中看到“mousedown”。
这有什么问题?
答案 0 :(得分:0)
Doh!
我找到了原因,事件应该像这样绑定:
$element.bind("mousedown.cool", $self.select);
而不是这样:
$element.mousedown($self.select);