取消绑定点击事件可以实现我想要的但是会触发javascript控制台错误

时间:2011-07-19 04:18:28

标签: jquery

如果一个Jquery插件执行了此代码:

dropdown = {
    doc: $(document),
    element: $('#user_info'),
    open: function() {
        if ( ! dropdown.element.hasClass('active') ) {
            dropdown.element.addClass('active');
            dropdown.doc.one( 'click', dropdown.close );
            return false;
        }
    },
    close: function() {
        dropdown.element.removeClass('active');
    }
};

dropdown.element.click( dropdown.open );

如何在我自己的自定义(另一个文件)Jquery插件中禁用/删除/取消绑定单击处理程序?

我正在使用此代码:

dropdown = {
    doc: jQuery(document),
    element: jQuery('#user_info')
};

dropdown.element.click(function(e) {
    dropdown.element.unbind('click', dropdown.open);
});

我得到了我想要的东西,但是javascript控制台显示了这个错误:

TypeError: Object #<Object> has no method 'unbind'...

如果有办法避免此错误,请告诉我。

提前致谢。

2 个答案:

答案 0 :(得分:1)

  

如果有办法避免此错误,请告诉我。

在您的示例中,您似乎在调用unbind时错过了一个属性名称。你的意思不是吗?

dropdown = {
    doc: jQuery(document),
    element: jQuery('#user_info')
};

dropdown.element.click(function(e) {
    dropdown.element.unbind('click', dropdown.open);
});

注意dropdown.element.unbind()。变量dropdown不是示例中的jQuery对象,但dropwdown.element是。

答案 1 :(得分:0)

好的,我明白了:

dropdown = {
    doc: jQuery(document),
    element: jQuery('#user_info'),
    open: function() {
        dropdown.element.addClass('active');
        dropdown.doc.one( 'click', dropdown.close );
        return true;
    },
    close: function() {
        dropdown.element.removeClass('active');
    }
};

dropdown.element.click( dropdown.open );