我正在使用模块化模式编写我的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);
它不起作用!没有错误或警告。如果我只使用off
和mousedown
而没有传递处理程序名称,那么它就可以了。但我需要将两个不同的处理程序分开!
如何在模块化js环境中完成?
答案 0 :(得分:0)
Jquery .off方法最多可以使用3个参数,使用以下代码:
Namespace.objects.someObject.off('mousedown', '**', Namespace.handlers.mouseDownHandlerOne);