2016-04-26 4 views
0

js clickイベントで2つのdivがあります。一方のdivはもう一方のdivにあります。内側のdivをクリックした場合、外側のdivからのクリックイベントを防ぐ方法

しかし、内側のものをクリックすると、外側のdivのクリックイベントが発生しないようにしたいと思います。どうすればそれを防ぐことができますか?

+0

[親イベントハンドラの防止実行]の可能な重複(http://stackoverflow.com/questions/139858親イベントハンドラの実行を防止する) –

答えて

0

event.stopPropagation()を使用します。

この

document.getElementById("#seconddiv").addEventListener("click", function($event){ 
    $event.stopPropagation(); 
}); 
+0

thx :)しかし、いくつかの調査の後、私は内側のdivのクリックイベントを外部イベントのトリガなしに直接呼び出すより良い方法を発見しました。これは、$( '。class1')のように見えます。add( '。class2')。click(some_function); '問題は、私のdivが存在しないためにドキュメント上でclickイベントを呼び出す必要があることです。 jsコードが読み込まれます。 '$( 'class1')を呼び出すにはどうすればいいですか?( '。class2')click(some_function ); '文書上で? – dunnohowishouldnamemyself

+0

あなたのために良い:) –

0

使用するevent.stopPropagation同様:デフォルトで

document.getElementById('inner').addEventListener('click', function (event){ 
    event.stopPropagation(); 
    console.log ('Inner div clicked!'); 
}); 

https://jsfiddle.net/4L87qLte/

0

、あなたがハンドラを定義しているDOMの最低レベルで始まるイベント処理ターゲットイベントを処理します。

e.stopPropagation(); 
:イベントは、それが中で処理するためにあなたが意図層を越えて処理するために、あなたが希望しない場合は、あなたが同じイベントを処理するために、親チェーンの高いイベントリスナーを定義していると仮定すると、あなたは stop the propagation of the eventにする必要があります

あなたは以下の例では、その行を削除するときに何が起こるかを参照してください:

document.querySelector('.inner').addEventListener('click', function(e) { 
 
    alert('inner div clicked!'); 
 
    e.stopPropagation(); 
 
}); 
 

 
document.querySelector('.outer').addEventListener('click', function() { 
 
    alert('outer div clicked!'); 
 
});
.outer { 
 
    width: 200px; 
 
    height: 200px; 
 
    background: blue; 
 
} 
 

 
.inner { 
 
    width: 100px; 
 
    height: 100px; 
 
    background: green; 
 
}
<div class='outer'> 
 
    Outer 
 
    <div class='inner'> 
 
    Inner 
 
    </div> 
 
</div>

関連する問題