2016-05-01 5 views
3

私はこれをしたい私のウェブでのいくつかの要素のために、このコードを持っている:ユーザーがクリックするdiv要素で、この中にdivの内側のボタンをクリックする(トリガークリックボタンとき、親divの中にユーザーがクリック

これらのボタンはモーダルを開きます)、これはページの他の場所で動作し、ウィンドウを作成します。代わりにトリガーです。このコードで何が悪いですか?私は

:(それを知らない申し訳ありませんが私の英語、感謝

jQuery(".hover-content").click(function(e){ 
     var hl = jQuery(this); 
     jQuery(this).find("button").each(function(){ 
      if(jQuery(this).is(":visible")){ 
       jQuery(this).trigger("click"); 
      } 
     }); 
    }); 

コンソールはこのエラーを示しています。

Uncaught RangeError: Maximum call stack size exceeded

リトル例: https://jsfiddle.net/z0704nss/

+0

あなたはそれで動作するように[Jsfiddle](https://jsfiddle.net/)の例を提供することができますか? –

+0

簡単に試してみてください.click(); .trigger( "クリック")の代わりに。 –

+0

はい、問題はトリガまたはクリック関数ではありません。このエラーが発生しています。 キャッチしたRangeError:最大呼び出しスタックサイズを超えました ページに2つのボタンがある9つのdivがありますが、これはスタックの問題:S – Genaut

答えて

3

それはJavascriptであるためevent bubblingのです
私はを追加することでそれを複製して解決することができますをあなたのコードに追加します。

$(".hover-content").click(function(e){ 
 
    e.preventDefault(); 
 
    console.log('hi') 
 
    e.stopPropagation(); 
 
    $(this).find("button").each(function(){ 
 
     if($(this).is(":visible")){ 
 
      $(this).trigger("click"); 
 
     } 
 
    }); 
 
}); 
 

 
$('.button-ex').click(function(e){ 
 
    e.preventDefault(); 
 
    e.stopPropagation(); 
 
    console.log('clicked button') 
 
})
body { 
 
    background-color: #eef; 
 
    padding: 5px; 
 
} 
 
.hover-content{ 
 
    background-color:#FF0000 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="hover-content"> 
 
    <button id="btnOne" class="button-ex">demo1</button> 
 
    <button id="btnTwo" class="button-ex">demo2</button> 
 
</div>

+0

https://jsfiddle.net/9jq73ecf/これはどうですか?これらのコンテンツを持つ9つのdivがある場合。すべてのボタンがすべて実行されます。この例は、私が持っているコードのようです:https://jsfiddle.net/z0704nss/(同じエラー) – Genaut

+0

これを確認してください。 https://jsfiddle.net/9jq73ecf/1/ –

+0

あなたの問題を解決しましたか? –

関連する問題