gpt4 book ai didi

jQuery:如何停止传播到同一个处理程序?

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

考虑以下代码:

$(document).click(function (event) {
console.log("Ok");
});

$(document).add($('p')).click(function onceHandler(event) {
console.log('Clicked.');
});

我想让 onceHandler 在单击“p”时仅运行一次,因此每个处理程序应该运行一次,而不是第二个处理程序运行两次,因为单击从 p 传播到文档。

event.stopPropagation() 将破坏第一个处理程序,因此我无法使用它。我也尝试过:

$(document).add($('p')).click(function(event) {
if (event.stopDoingThat) return;
console.log('Clicked.');
event.stopDoingThat = true;
});

这不起作用。所以基本上在不改变任何东西的情况下,我得到了 2 个“点击”和 1 个“确定”。使用 stopPropagation - 1 “clicked”,我需要的是 1 “clicked” 和 1 “ok”

最佳答案

这似乎是 jQuery 的 one 函数的完美用例:

Description: Attach a handler to an event for the elements. The handler is executed at most once per element.

在您的情况下,这将转换为类似以下代码的内容:

$(document).add($('p')).one('click', function onceHandler(event) {
console.log('Clicked.');
});

更多信息请参见 jQuery docs .

关于jQuery:如何停止传播到同一个处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8896037/

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