jQuery.off没有使用变量函数名

时间:2013-01-15 12:18:01

标签: javascript jquery

我正在使用模块化模式编写我的Javascript代码,这非常有趣!但是我在一种情况下陷入了困境。

我的命名空间如下:

var settings, handlers, objects,
Namespace = {
    handlers: {
        //All event handlers go here
    },

    objects: {
        //All jquery button references go here
    },

    init: function(){
        //Initial stuff
    }
};

//Call init with the Namespace

我有一个按钮,可以在两个不同的处理程序之间切换单个对象(div)上的mousedown事件,处理程序是handlers对象的属性。在init上,一个处理程序自动on到div并且工作正常。现在,当我点击切换按钮时,我正试图关闭第一个处理程序,这样我就可以打开另一个,但它不起作用!

我转向on我的第一个mousedown事件处理程序(或所有处理程序!),如下所示:

Namespace.objects.someObject.on('mousedown', Namespace.handlers.mouseDownHandlerOne);

这很好用。当我尝试将它off转为:

Namespace.objects.someObject.off('mousedown', Namespace.handlers.mouseDownHandlerOne);

它不起作用!没有错误或警告。如果我只使用offmousedown而没有传递处理程序名称,那么它就可以了。但我需要将两个不同的处理程序分开!

如何在模块化js环境中完成?

1 个答案:

答案 0 :(得分:0)

Jquery .off方法最多可以使用3个参数,使用以下代码:

Namespace.objects.someObject.off('mousedown', '**', Namespace.handlers.mouseDownHandlerOne);