2016-09-21 10 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

さて、あなたはおそらく体にバブルアップクリックイベントを発行し、恐らくボディーまで泡立ち、クリックイベントを発行するクリックイベントを発行します。 – 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.Wolff私はそれを見落としました。 –

関連する問題