触发单击时超出最大调用堆栈大小

时间:2016-09-21 15:23:27

标签: javascript jquery javascript-events

我真的想做一些简单的事情。点击某个元素后,我触发了另一个元素的点击,但我在控制台上收到了以下错误。

Uncaught RangeError: Maximum call stack size exceeded

我的代码如下;

$('body').on('click', '.actual-click-element', function(event) { 
    $('.trigger-click-element').trigger('click');
    event.preventDefault(); 
});

我想知道为什么会收到此错误,我不知道这是如何递归的。有什么想法吗?

1 个答案:

答案 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');});