我有 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/

10-12 06:44