2016-09-21 59 views
1

我真的想做一些簡單的事情。點擊一個特定的元素,我觸發另一個元素的點擊,但我得到了我的控制檯上的下面的錯誤。觸發點擊超出最大調用堆棧大小

Uncaught RangeError: Maximum call stack size exceeded

我的代碼是如下;

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

我想知道爲什麼我得到這個錯誤,我不明白這是如何遞歸的。有任何想法嗎?

+0

那麼,當你點擊的身上,你發出這大概泡到身體click事件和發出一個點擊事件,大概起泡到身體併發出點擊事件... – vlaz

+0

此外,您錯過了一個結束報價。 – vlaz

回答

7

無疑是因爲.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');}); 
+0

乾杯@ A.沃爾夫我完全忽略了這一點。 –

相關問題