我在JavaScript中编写了一个模板解析器。它将“项目”呈现为日历并附加单击处理程序。单击项目容器时,它开始在另一个窗口中加载项目内容。到现在为止还挺好。但有一次我需要覆盖这个点击处理程序并将其替换为另一个。听起来很简单,但我的程序使用推送和轮询服务的混合,项目必须每分钟渲染几次(它将被完全替换,至少在第一次迭代中)。
使用jQuery的click()
方法添加普通的点击处理程序。使用jQuery的on()
方法添加特殊单击处理程序,因为所有项目都必须使用此新处理程序进行单击。现在,每次重新渲染项目时,将在添加on
的处理程序之前附加并执行单击处理程序:(
我可以在模板上设置一个标志,这样他就可以决定应该将哪个处理程序添加到项目中,但这会干扰我们使用的程序范例,其中每个模块必须是完整的可执行文件没有与其他模块交互。
有什么建议吗?我可以优先考虑处理程序吗?
答案 0 :(得分:0)
您可以在绑定新用户之前删除之前的点击操作。
$yourObject.off('click');
.on('click', function(event){
//do sth
});
如果您只有一次点击,并且只想取消绑定其中一些,请使用事件命名空间。
结合:
$yourObject.on('click.module-name');
Unbinind仅从命名空间中单击事件处理程序:
$yourObject.off('click.module-name');
从名称空间中解除所有事件处理程序的绑定:
$yourObject.off('.module-name');