我正在使用模块化模式来编写我的 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
mousedown
我有一个按钮,可以在单个对象(div)上的事件的两个不同处理程序之间切换,处理程序是handlers
对象的属性。On init
,一个处理程序自动on
进入 div 并且工作正常。现在,当我单击切换按钮时,我正在尝试关闭第一个处理程序,以便可以打开另一个处理程序,但它不起作用!
我将on
我的第一个mousedown
事件处理程序(或所有处理程序!)像这样:
Namespace.objects.someObject.on('mousedown', Namespace.handlers.mouseDownHandlerOne);
这工作正常。当我尝试off
像这样转动它时:
Namespace.objects.someObject.off('mousedown', Namespace.handlers.mouseDownHandlerOne);
它不起作用!没有错误或警告。如果我只使用off
withmousedown
而不传递处理程序名称,它可以工作。但我需要区分 2 个不同的处理程序!
在模块化的js环境下应该怎么做?