在锚点上触发click()命令时出现“太多递归”错误

时间:2018-09-12 01:35:01

标签: javascript jquery

在我的代码中,我想单击div并使其在指定的元素ID上触发click(),但是我却遇到了这种递归错误,就像在无限循环中一样。

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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

尝试以下方法:

[L]

可能仍然存在递归,但是问题是您的点击功能不起作用。由于我们要离开该页面(单击指向google.com的链接),所以这并不重要。

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

答案 2 :(得分:0)

尝试使用jquery中的触发器

function clickLink(id) {
  $('#' + id).trigger(”click”);
}