2

我正在使用模块化模式来编写我的 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);

它不起作用!没有错误或警告。如果我只使用offwithmousedown而不传递处理程序名称,它可以工作。但我需要区分 2 个不同的处理程序!

在模块化的js环境下应该怎么做?

4

1 回答 1

0

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

Namespace.objects.someObject.off('mousedown', '**', Namespace.handlers.mouseDownHandlerOne);
于 2013-01-15T12:22:54.577 回答