Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryoff未解除绑定_Javascript_Ember.js_Jquery - Fatal编程技术网

Javascript jqueryoff未解除绑定

Javascript jqueryoff未解除绑定,javascript,ember.js,jquery,Javascript,Ember.js,Jquery,我正在编写一个通用控件(使用ember.js),它需要捕获所有点击。根据用户单击的位置,我需要执行自定义逻辑。(例如,单击外部将隐藏元素。单击输入将显示下拉列表) 不幸的是,我无法在关闭控件时正确解除事件绑定。尽管解除绑定/关闭代码已运行,但上述逻辑仍将运行。(其他一切正常) 我是这样注册活动的: $('body').on('click.autocomplete' + this.elementId, function (e) { .. }); $('body').off('click.auto

我正在编写一个通用控件(使用ember.js),它需要捕获所有点击。根据用户单击的位置,我需要执行自定义逻辑。(例如,单击外部将隐藏元素。单击输入将显示下拉列表)

不幸的是,我无法在关闭控件时正确解除事件绑定。尽管解除绑定/关闭代码已运行,但上述逻辑仍将运行。(其他一切正常)

我是这样注册活动的:

$('body').on('click.autocomplete' + this.elementId, function (e) {
..
});
$('body').off('click.autocomplete' + this.elementId);
然后像这样取消注册:

$('body').on('click.autocomplete' + this.elementId, function (e) {
..
});
$('body').off('click.autocomplete' + this.elementId);
如何才能正确解除事件绑定

更新: 我能够更准确地指出这个问题。关闭视图时,该事件在调用()之前再次触发,但之后仍会运行

解决方案修复程序如下所示:

$('body').on('click.autocomplete' + this.elementId, function (e) {
   if (!self.elementId)
         return;
});

不过,在取消时清除特定的事件队列会很好

这绝对有效。请看这里的示例:它是人为的,但它显示了过程。您是否使用willDestroyElement钩子解除绑定?@CodeJack:是的,我使用的是willDestroyElement钩子hook@ZenMaster:好的。谢谢你的再次保险。然后它可能会归结为一个与余烬相关的问题。
$('button')。解除绑定('click')