将某些事件处理程序与命名空间取消绑定
Unbind some event handlers with namespaces
我想
问一下,如何从document
中删除事件处理程序,而只删除那些带有命名空间的事件处理程序?
我有这段代码,我没有看到任何错误,但是即使在.unbind
之后,此函数也始终触发mouseup
和touchend
的事件处理程序。我确定我在此代码中有一些错误。
$(".inp").on("autocompleteresponse", function(event, ui) {
$(document).bind( "mouseup.test, touchend.test", function(e) {
var container = $('.ui-autocomplete');
if (!container.is(e.target) && container.has(e.target).length === 0) {
if (ui.content.length > 0) {
ui.item = ui.content[0];
console.log (ui.item);
$(".inp").val(ui.item.label);
// This will fire always, on document click, should only once per time
$(document).unbind("mouseup.test, touchend.test");
}
}
});
});
感谢您的建议
首先,on()
和off()
现在是首选方法,而不是过时的bind()
和unbind()
。
其次,要解决您的问题,您应该用空格而不是逗号分隔事件。试试这个:
$(".inp").on("autocompleteresponse", function(event, ui) {
$(document).on("mouseup.test touchend.test", function(e) {
var container = $('.ui-autocomplete');
if (!container.is(e.target) && container.has(e.target).length === 0) {
if (ui.content.length > 0) {
ui.item = ui.content[0];
console.log(ui.item);
$(".inp").val(ui.item.label);
$(document).off("mouseup.test touchend.test");
}
}
});
});
另请注意,如果要关闭与命名空间关联的所有事件,可以将命名空间单独传递给 off()
方法:
$(document).off(".test")
相关文章:
- 在javascript中使用命名空间
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 如何使用javascript命名空间
- js命名空间和变量范围
- html,js-如何限制元素"范围“-命名空间
- 转换自的JavaScript命名空间
- 命名空间与自调用函数
- 什么's当前命名空间/类中JavaScript子命名空间/类的语法
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- jQuery命名空间和使用“;这个“;
- 在Firebug控制台中监视javascript命名空间变量
- jQuery事件命名空间是否可以包含破折号
- 用自定义javascript全局命名空间替换窗口
- 如何在Typescript中导出具有其他名称的命名空间
- 从html文件中的脚本标记调用非全局命名空间函数
- 正在测量全局命名空间的污染
- 谷歌闭包命名空间冲突
- 取消绑定除特定命名空间之外的所有命名空间中的事件
- 将某些事件处理程序与命名空间取消绑定