2

如标题中所述,我的 JS 存在一些问题。

js:

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

html:

<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>

这导致 Chrome 崩溃,Firefox 抛出太多递归错误。发生了什么,我该如何解决?

4

4 回答 4

4

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

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

请参阅event.stopPropagation 上的 jQuery API

于 2013-04-10T09:49:29.310 回答
2

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

    $(function () {
        $("#bg2InsideFb, #bg2InsideG").click(function () {
            var tmpLink = $(this).find("a").attr("href");
            window.location.href = tmpLink;
        });
    });
于 2013-04-16T06:35:44.957 回答
1

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

$('#fbLink').click(function(ev) { 
    ev.stopPropagation();  
});
$('#fbLink').triggerHandler('click');``
于 2013-04-10T09:51:35.723 回答
0

当你打电话给它时$("#fbLink").click();,它实际上也在打电话给它的父母。这就是它导致递归错误的原因。你能解释一下你想做什么吗?

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

它可能有效。

于 2013-04-10T09:52:59.980 回答