gpt4 book ai didi

javascript - 取消绑定(bind)一些事件处理程序与命名空间

转载 作者:行者123 更新时间:2023-11-29 21:22:44 25 4
gpt4 key购买 nike

我想问一下,如何从 document 中删除事件处理程序? , 但只有那些有命名空间的?

我有这段代码,没有发现任何错误,但是这个函数总是触发 mouseup 的事件处理程序和 touchend即使在 .unbind 之后.我确定我在这段代码中有一些错误。

$(".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 - 取消绑定(bind)一些事件处理程序与命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38225155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com