在我的代码中,我想单击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
(。
尝试使用 jquery 中的触发器
function clickLink(id) {
$('#' + id).trigger(”click”);
}
试试这个:
function clickLink(id) {
$('#' + id)[0].click();
}
可能仍然存在递归,但问题是您的单击函数不起作用。由于我们要离开页面(单击指向 google.com 的链接(,因此这并不重要。
有关点击事件的解释,请参阅罗曼·斯塔科夫的评论: 如何使用jQuery触发对链接的点击