我真的想做一些简单的事情。点击某个元素后,我触发了另一个元素的点击,但我在控制台上收到了以下错误。
Uncaught RangeError: Maximum call stack size exceeded
我的代码如下;
$('body').on('click', '.actual-click-element', function(event) {
$('.trigger-click-element').trigger('click');
event.preventDefault();
});
我想知道为什么会收到此错误,我不知道这是如何递归的。有什么想法吗?
答案 0 :(得分:17)
当然因为.trigger-click-element
是.actual-click-element
...
为避免递归调用,您可以使用jq triggerHandler():
使用.triggerHandler()触发的事件不会冒泡DOM 层次结构;如果它们不是直接由目标元素处理的, 他们什么都不做。
$('body').on('click', '.actual-click-element', function(event) {
$('.trigger-click-element').triggerHandler('click');
event.preventDefault();
});
现在,如果$('.trigger-click-element')
返回多个元素,您可以使用:
$('.trigger-click-element').each(function(){$(this).triggerHandler('click');});