Javascript jquery在一次单击中单击会导致很多递归错误

Javascript jquery在一次单击中单击会导致很多递归错误,javascript,jquery,html,Javascript,Jquery,Html,如标题所述,我的JS有一些问题 js: $("#bg2InsideFb").click(function () { $("#fbLink").click(); }); <div id="bg2InsideFb"> <p id="fbIcon"> <img src="@routes.Assets.at("images/mobile/login/fblogin-ico.png")" alt="Facebook"/>

如标题所述,我的JS有一些问题

js:

$("#bg2InsideFb").click(function () {
       $("#fbLink").click();
    });
<div id="bg2InsideFb">
    <p id="fbIcon">
        <img src="@routes.Assets.at("images/mobile/login/fblogin-ico.png")" alt="Facebook"/>
    </p>
    <p class="pl20">
        <a id="fbLink" href="@fb.authenticationUrl"> @Messages("review.form.facebook.login") </a>
    </p>
 </div>
 <p class="floatleft f13">
    @Messages("review.form.facebook.term")
 </p>
html:

$("#bg2InsideFb").click(function () {
       $("#fbLink").click();
    });
<div id="bg2InsideFb">
    <p id="fbIcon">
        <img src="@routes.Assets.at("images/mobile/login/fblogin-ico.png")" alt="Facebook"/>
    </p>
    <p class="pl20">
        <a id="fbLink" href="@fb.authenticationUrl"> @Messages("review.form.facebook.login") </a>
    </p>
 </div>
 <p class="floatleft f13">
    @Messages("review.form.facebook.term")
 </p>

@消息(“review.form.facebook.term”)


这导致Chrome崩溃,Firefox抛出过多的递归错误。发生了什么以及如何解决此问题?

您正在通过编程方式单击
\fbLink
,它是
\bg2InsideFb
中的一个元素。事件冒泡会导致相同的单击,从而影响后面的元素,然后触发另一次单击。为了防止这种情况,您需要将侦听器挂接到内部元素,以防止像这样的传播:

$('#fbLink').click(function(jqEvt) {
    jqEvt.stopPropagation();
}

请参阅。

我假设您想触发#fbLink。在这种情况下,您必须使用

$('#fbLink').click(function(ev) { 
    ev.stopPropagation();  
});
$('#fbLink').triggerHandler('click');``

调用
$(“#fbLink”)时。单击()它实际上也在呼叫它的父母。这就是它导致递归错误的原因。你能解释一下你到底想做什么吗

$("#bg2InsideFb").click(function () {
   $("#fbLink").click(function(){
      return false;
   });
});

它可能会工作。

好的,我这样做是因为传播解决方案对我不起作用

    $(function () {
        $("#bg2InsideFb, #bg2InsideG").click(function () {
            var tmpLink = $(this).find("a").attr("href");
            window.location.href = tmpLink;
        });
    });

不,触发器仍然会导致冒泡。我想你的意思是.triggerHandler(),但这仍然不能完全回答OPMy的错误,是的,我的意思是
triggerHandler()
。谢谢你纠正我。嗯,我添加了你的代码,现在没有错误,但什么也没发生。我想我错过了什么?@jakob我甚至不知道它应该做什么。由于它是一个链接,我认为应该加载新内容。你的新密码是什么?是的,你是对的。应加载新内容。代码与之前相同,我刚刚将stopPropagation代码添加到js文件。@jakob
stopPropagation
应该没有任何问题。我认为错误就在别的地方。这是一个异步请求还是您在锚上注册了更多的点击处理程序?嗯,如果我执行$('#fbLink')。点击(),则是对同一域上其他页面的常规同步请求;在chrome控制台中,我返回:[​ ] 不应单击导致单击链接并移动到/​鉴定/​脸谱网