取消绑定小部件事件

时间:2010-10-14 22:11:10

标签: jquery-ui jquery

我正在编写自己的小部件,除了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”。

这有什么问题?

1 个答案:

答案 0 :(得分:0)

Doh!

我找到了原因,事件应该像这样绑定:

$element.bind("mousedown.cool", $self.select);

而不是这样:

$element.mousedown($self.select);