代码之家  ›  专栏  ›  技术社区  ›  Daniel Williams

在锚上启动click()命令时出现“递归过多”错误

  •  0
  • Daniel Williams  · 技术社区  · 6 年前

    在我的代码中,我想点击div并让它触发 click() 但是在指定的元素ID上,我得到了这个递归错误,就像它在无限循环中一样。

    function clickLink(id) {
      $('#' + id).click();
    }
    .theDiv {
      border: 1px solid red;
      width: 200px;
      height: 200px;
      }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    click the div, but not on the link
    <div class="theDiv" onclick="clickLink('linkId')">
      <a href="http://www.google.com" id="linkId">i am a link</a>
    </div>
    3 回复  |  直到 6 年前
        1
  •  2
  •   vicbyte    6 年前

    由于事件冒泡,这实际上是一个无限循环。子元素上发生的事件将冒泡到父元素上。在您的情况下,单击 a#linkId 会泡泡到父母身上 div onclick 处理程序(“点击”按钮 再次)。

        2
  •  0
  •   nosleepfilipe    6 年前

    尝试使用jquery中的触发器

    function clickLink(id) {
      $('#' + id).trigger(”click”);
    }
    
        3
  •  0
  •   dustytrash    6 年前

    function clickLink(id) {
        $('#' + id)[0].click();
    }
    

    可能仍然存在递归,但问题是click函数不起作用。因为我们要离开这个页面(点击google.com的链接),这并不重要。

    有关单击事件的解释,请参阅Roman Starkov的评论: How to trigger a click on a link using jQuery