Gue*_*lla 11 javascript jquery
在这个例子中,我希望在单击黑色外部div时触发警报,而不是在单击内部div中的任何内容时触发警报.
目前,当我单击内部按钮时,它会触发警报.
$("#outer").click(function() {
alert("triggered");
});Run Code Online (Sandbox Code Playgroud)
#outer{
position: absolute;
width: 100%;
height: 100%;
background-color: #000;
display: flex;
justify-content: center;
align-items: center;
}
#inner{
background-color: #fff;
width: 300px;
height: 300px;
text-align: center;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outer">
<div id="inner">
<button>inner button</button>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
我想在内部div中没有任何东西可以触发警报.我该怎么做呢?
(由于某种原因,内部按钮没有显示在代码段中,这里是codepen链接:https://codepen.io/GuerrillaCoder/pen/Pmvmqx )
Jay*_*der 11
你只需要检查元素的id,因为inner是子元素,它总是将事件传播到父元素(外部).
$("#outer").click(function(event) {
if(event.target.id=="outer"){
alert("triggered");
}
});
Run Code Online (Sandbox Code Playgroud)
event.stopPropagation();单击innerdiv 时可以使用:
$("#outer").click(function() {
alert("triggered");
});
$('#inner').click(function (evt) {
evt.stopPropagation();
});Run Code Online (Sandbox Code Playgroud)
#outer{
position: absolute;
width: 100%;
height: 100%;
background-color: #000;
display: flex;
justify-content: center;
align-items: center;
}
#inner{
background-color: #fff;
width: 300px;
height: 300px;
text-align: center;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outer">
<div id="inner">
<button>inner button</button>
</div>
</div>Run Code Online (Sandbox Code Playgroud)
在click函数中,检查事件目标等于outer
$("#outer").click(function(e) {
if (e.target.id === "outer"){
alert("triggered");
}
});
Run Code Online (Sandbox Code Playgroud)