强制执行第二个处理程序,使用on进行绑定

时间:2013-08-10 11:55:07

标签: jquery

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

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

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

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

1 个答案:

答案 0 :(得分: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');