2017-08-17 68 views
1

如何只触发可点击格内的可点击内部div?如何只触发可点击格内的可点击

如果你点击内部的蓝色框内部和外部的onclick事件触发,但我只想得到蓝色触发?

.outer { 
 
    width: 100px; 
 
    height: 50px; 
 
    cursor: pointer; 
 
    background: green; 
 
    } 
 
    
 
.inner { 
 
    width: 50px; 
 
    height: 50px; 
 
    cursor: pointer; 
 
    background: blue; 
 
}
<div class="outer" onclick="alert('Hello world from outside');" role="button" tabIndex="-1"> 
 
    <div class="inner" onclick="alert('Hello world form inside');" role="button" tabIndex="-1"> 
 
    </div> 
 
</div>

enter image description here

不知道如果有必要提一下,但我想在使用SASS反应解决这个问题。

+3

的可能的复制[如何停止与联事件传播onclick属性?](https://stackoverflow.com/questions/387736/how-to-stop-event -propagation-with-inline-onclick-attribute) –

+0

哦,是的。你是对的。抱歉。 – tomole

+0

找到符合您要求的解决方案/说明。 [链接到stackoverflow](https://stackoverflow.com/questions/34725592/link-within-a-link-onclick-event-avoid-both-click-events-triggering/34725912) –

回答

4

使用event.stopPropagation();此方法停止将事件冒泡到父元素,从而阻止执行任何父事件处理程序。

<div class="outer" onclick="alert('Hello world from outside');" role="button" tabIndex="-1"> 
    <div class="inner" onclick="alert('Hello world form inside');event.stopPropagation();" role="button" tabIndex="-1"> 
    </div> 
</div> 
+1

谢谢。这样可行。 – tomole

0

使用

event.target 

这样的:

HTML

<div class="_div" data-div="1"><div class="_div" data-div="2"></div></div> 

的js

var match = document.querySelectorAll("._div"); 
for(var i = 0; i <= match.lenght; i++){ 
    match.item(i).addEventListener('click', function(event){ 
    console.log("div clicked:"event.target) 
    if(event.target.dataset.div == "2"){ // do something ... } 
    }) 
} 
1

试试这个:

function fun(msg) { 
 
    alert(msg); 
 
    event.stopPropagation(); 
 
}
.outer { 
 
    width: 100px; 
 
    height: 50px; 
 
    cursor: pointer; 
 
    background: green; 
 
    } 
 
    
 
.inner { 
 
    width: 50px; 
 
    height: 50px; 
 
    cursor: pointer; 
 
    background: blue; 
 
}
<div class="outer" onclick="fun('Hello world from outside');" role="button" tabIndex="-1"> 
 
    <div class="inner" onclick="fun('Hello world form inside');" role="button" tabIndex="-1"> 
 
    </div> 
 
</div>