gpt4 book ai didi

javascript - 使用 .on() 作为点击事件的奇怪行为 - 触发两次

转载 作者:行者123 更新时间:2023-12-03 10:20:51 27 4
gpt4 key购买 nike

我已经检查过有关两次触发点击事件的答案。但我有一个关于使用 .on() 的问题。

通常,我在动态添加的元素上使用它,它总是工作得很好:

$(document).on("click", "dynElement", function(){})

在我目前正在开发的网站中,我多次使用它。但在我试图实现的功能中,比如说,动态“跳转到页面”,点击页码会被触发两次:

$(document).on("click", ".jumpTo .number", function(){
console.log("Jump");
});

试图找到这种行为的根源,我尝试了这种工作正常的语法:

$(".jumpTo").on("click", ".number", function(){
console.log("Jump");
});

谁能解释一下这两种不同的语法之间有什么区别(对我来说看起来很相似)?

还有可选,为什么 $(document).on("click", ".jumpTo .number", function(){}) 被触发两次? (可选地,因为我无法在 Fiddle 中重现此行为,所以一切都按预期进行)。

最佳答案

$(document).on("click", ".jumpTo .number", function(){
console.log("Jump");
});

在本例中,单击处理程序是在文档对象上设置的。因此,每当您单击页面上的某个位置时,它就会触发并在其中查找“.jumpTo .number”元素。如果找到它,它将检查是否单击了它,并且您的函数将执行。

$(".jumpTo").on("click", ".number", function(){
console.log("Jump");
});

这里的点击处理程序将位于 .jumpTo

正如 Al.G 所说,这段代码可能会执行多次,因此您实际上多次添加该处理程序,因此会发生两次触发。解决该问题的一种方法是执行以下操作:

$(".jumpTo").unbind("click").on("click"...

另一种方法是更改​​代码以确保 .on() 调用不会执行两次。

关于javascript - 使用 .on() 作为点击事件的奇怪行为 - 触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29645243/

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