繁体   English   中英

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

[英]'too much recursion' error when firing click() command on anchor

在我的代码中,我想单击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> 

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

尝试以下方法:

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

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

有关click事件的解释,请参见Roman Starkov的评论: 如何使用jQuery触发对链接的单击

尝试使用来自jQuery的触发器

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM