强制执行第二个处理程序,在上绑定



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

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

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

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

您可以在绑定新的点击手之前删除以前的点击手。

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

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

如果您有多次单击,并且只想解除其中一些绑定,请使用事件名称空间。

绑定:

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

取消绑定命名空间中的仅点击事件处理程序:

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

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

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

最新更新