0

我用 JavaScript 编写了一个模板解析器。它将“项目”呈现到日历中并附加一个点击处理程序。当您单击项目容器时,它开始在另一个窗口中加载项目内容。到目前为止,一切都很好。但有一次我需要覆盖这个点击处理程序并将其替换为另一个。一开始听起来很简单,但我的程序混合使用了推送和轮询服务,并且该项目必须每分钟渲染几次(至少在第一次迭代中将被完全替换)。

普通的点击处理程序是使用 jQuery 的click()方法添加的。特殊的点击处理程序是使用 jQuery 的on()方法添加的,因为所有项目都必须可以使用这个新的处理程序进行点击。现在,每次重新渲染项目时,单击处理程序将在添加处理程序之前附加并执行on:(

可以在模板上设置一个标志,以便他可以决定应该将哪个处理程序添加到项目中,但这会干扰我们正在使用的程序范例,其中每个模块必须是完全可执行的,而不与其他模块交互。

有什么建议么?我可以优先处理处理程序吗?

4

1 回答 1

0

您可以在绑定新的单击处理程序之前删除以前的单击处理程序。

$yourObject.off('click');
           .on('click', function(event){
               //do sth
            });

http://api.jquery.com/off/

如果您单击不止一次,并且只想取消绑定其中一些,请使用事件命名空间。

捆绑:

$yourObject.on('click.module-name');

Unbinind 仅单击命名空间中的事件处理程序:

$yourObject.off('click.module-name');

从命名空间取消绑定所有事件处理程序:

 $yourObject.off('.module-name');
于 2013-08-10T12:44:33.020 回答