gpt4 book ai didi

event-handling - 使用 .on() 附加到文档时无法删除特定事件处理程序

转载 作者:行者123 更新时间:2023-12-01 00:00:02 25 4
gpt4 key购买 nike

这是一个简单的 fiddle 来演示我的情况......

http://jsfiddle.net/UnsungHero97/EM6mR/17/

我正在做的是使用 .on() 为当前和 future 的元素添加事件处理程序。我希望能够在发生某些情况时删除特定元素的这些事件处理程序;在 fiddle 的情况下,当选择单选按钮时,应删除蓝色元素的事件处理程序,并且单击这些元素不应再执行任何操作。

它似乎不起作用:(

如何删除附加到我使用 .on() 为这些特定蓝色元素创建的 document 的事件处理程序?

最佳答案

.on().off() 的签名必须匹配。

这两个不匹配,因此 .off() 调用将找不到要删除的匹配事件处理程序:

$(document).on('click', '.btn', function() {
update();
});

$(document).off('click', '.blue');

请注意,传递给 .on().off() 的选择器是不同的。

<小时/>

当使用.on()的动态形式(将选择器作为参数传递给.on())时,您不能仅删除部分项目。这是因为根元素上只安装了一个事件处理程序,而 jQuery 只能删除整个事件或根本不删除。因此,您不能只 .off() 某些动态项目。

您的选择是删除所有事件处理程序:

$(document).off('click', '.btn');

然后安装一个新的事件处理程序,排除您不想要的项目,例如:

$(document).off('click', '.btn:not(.blue)');

或者,教导事件处理程序本身如何忽略 .blue 项目:

$(document).on('click', '.btn', function() {
if (!$(this).hasClass('blue')) {
update();
}
});

关于event-handling - 使用 .on() 附加到文档时无法删除特定事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15887675/

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