2017-11-15 12 views
0

私は親divと子div(多数)を持っています。親divには、clickイベントを伴うaddEventListenerがありました。しかし、私が内部をクリックすると、イベントdivideイベントも発生します。私はそれらの事を止めたい。div他のdiv内のonclick divも発火クリック

例私は親のdivとBの子divを持っています。 私はdivをクリックすると、div divをクリックしたときに何らかのロジック(b divのコンテンツを取得)を追加する必要があります。

var content= document.querySelector('.test-content'); 
 
    content.addEventListener('click', function(evt) { 
 
     var check = this.querySelector('.testClass'); 
 
     alert("fired"); 
 
     evt = evt || window.event; 
 
     stopPropagation(evt);  
 
    }); 
 
    
 
function stopPropagation(evt) { 
 
    if (typeof evt.stopPropagation == "function") { 
 
     evt.stopPropagation(); 
 
    } else { 
 
     evt.cancelBubble = true; 
 
    } 
 
    }
<div class="test-content" style="width:100%;height:200px;background-color:yellow" >This is Div A 
 
<div style="width:20%;height:100px;background-color:red"> This is Div B 
 
<div class="testClass" > test</div> 
 
</div> 
 
</div>

+1

https://stackoverflow.com/questions/9183381/how-to-have-click-event-only-fire-on-parent-div -not-children –

答えて

2

evt.target != this場合だけで、さらに進む前に確認してください。

デモ

var content= document.querySelector('.test-content'); 
 
    content.addEventListener('click', function(evt) { 
 
     if (evt.target != this) return false; //notice this line 
 
     alert("fired"); 
 
     evt = evt || window.event; 
 
     stopPropagation(evt);  
 
    }); 
 
    
 
function stopPropagation(evt) { 
 
    if (typeof evt.stopPropagation == "function") { 
 
     evt.stopPropagation(); 
 
    } else { 
 
     evt.cancelBubble = true; 
 
    } 
 
    }
<div class="test-content" style="width:100%;height:200px;background-color:yellow" >This is Div A 
 
<div style="width:20%;height:100px;background-color:red"> This is Div B</div> 
 
</div>

+0

ありがとうございます。それは正常に動作しています – RSKMR

+0

重複としてマークした場合、なぜそれに答えましたか? – brk

+0

@brk私は鉱山を削除しようとしていた。私はあなたが質問したかったと思う*なぜこれが重複している場合*答え:) – gurvinder372