javascript - jQuery 函数陷入循环

标签 javascript jquery html

我有一个带有链接的简单 div:

<div class="mhButton">
    <a href="#" id="RegisterAnimal"><span class="icon-checkmark"></span>&nbsp;&nbsp;Register Animal</a>
</div>

我有一个函数,只要单击“div.mhButton”就会触发该函数。此函数应找到“div.mhButton”子“a”并单击它。

    $(".mhButton").on('click', function () {
        var a = $(this).find("a").text();
        console.log(a);
        $(this).find("a").click();
    });

这行得通,但是,我陷入了一个运行了 639 次的循环。

我不明白为什么这运行了 X 次,然后继续没有错误。

有没有人有解决方案来防止这种情况发生?以及为什么会发生这种情况的解释?

注意* 控制台一次又一次地记录同一个按钮。

最佳答案

因为按钮中嵌入了 a 标签,所以您不断地重新触发事件。事件会冒泡,所以 anchor 会被点击,然后是它的父级。它一直在运行,直到浏览器厌倦了运行它然后才停止。该方法实际上并没有做任何事情,这可能是您没有看到任何问题的原因。您可以通过几种方式实现您的目标:

$(".mhButton").click(function () {
    $(this).off('click'); // turn the click handler off in the handler itself. 
    var a = $(this).find("a").text();
    console.log(a);
    $(this).find("a").click();
});

如果你这样做,那么你最终只能触发一次事件。

或者:

$(".mhButton").click(function (e) {
    a = $(this).find("a").text();
    console.log(a);
    $(this).find("a").click();
});

$("#RegisterAnimal").click(function (e) {
    e.stopPropagation(); // prevent the anchor from re-firing the button click
});

或者,您可以将链接样式设置为看起来像一个按钮,同时避免不必要的点击处理程序。

关于javascript - jQuery 函数陷入循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25772581/

相关文章:

python - Wagtail + Django 问题 - 页面重定向到 wagtail,尽管 url 不是 wagtail 页面

javascript - CSS 按钮元素类 "Inheritance"

javascript - Ember RESTAdapter 不联系服务器

javascript - 如何使文本出现在html中的滚动条上

javascript - 脚本在 JSfiddle 中运行但不在浏览器上运行

javascript - 在 facebox 和 jquery 中选择复选框?

javascript - html 和 perl,返回脚本文本而不是运行

javascript - 在 Google map 中按类别对标记进行分组

javascript - 选择框更改后提醒元素

c# - 使用属性防止在 ASP.NET MVC 中缓存特定操作