我有 2 个 html 元素:A 和 B,这是 jquery 代码:
$('A').click(function(){
$('B').click(function(){
console.log("hello");
})
})
当我单击 A 然后单击 B 时,它会显示“你好”,这很好。
但是当我再次单击A然后单击B时,这次它显示了两个“你好”,这是不可取的。我只想要一个你好。
我或多或少知道原因,可能是回调函数的结果:B 在第一次点击后仍在等待用户点击它。
现在我的问题是:如果我还想在“点击A”中“点击B”(“点击B”是“点击A”的回调函数),我该如何解决双重结果问题?
我是回调函数的新手,请帮忙!!!
最佳答案
问题是,每次连续点击 A
都会为您的 B
添加另一个点击处理程序。当您单击 B
时,这些处理程序中的每一个都会被执行。所以如果你点击 A
十次,你已经绑定(bind)了十个 clickhandlers 到 B
:-D
为了避免其他解决方案的问题,常量解除和重新绑定(bind)以及全局变量都是讨厌的,请改用这个干净的解决方案:
$('A').one("click", function(){
$('B').click(function(){
console.log("hello");
})
})
通过使用
.one()
而不是 click,A
上的 click-event 只触发一次,将一个 click-eventhandler 绑定(bind)到您的元素 B
。Example Fiddle
关于jquery - 如何停止jquery回调函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11646617/