我正在使用jQuery处理click
元素上的div
事件:
$("#id").on('mousedown', function(event) {
// ...
});
但是这个div
元素包含另一个div
(让我们称之为#id2
)可点击的部分。如果用户点击mousedown
,如何阻止#id2
事件被触发?现在,当我点击#id2
时,mousedown('#id')
和onclick('#id2')
会触发。
答案 0 :(得分:2)
您应该使用Event.stopPropagation()
,以便id2
的{{1}}事件也不会触发click
的{{1}}事件。与此同时,mousedown
似乎会在点击id
时触发,因此您可以检查Event.target
的mousedown
属性,以避免在{{1}时执行代码单击。这是一个简单的例子:
id2
id
答案 1 :(得分:2)
由于你正在使用jQuery,你可以将mousedown
侦听器附加到内部div,然后从中返回false
:
$("#inner").click(function() {
console.log("inner div was clicked");
return false;
}).on("mousedown", function() {
console.log("mousedown propagation stops here");
return false;
});
$("#outer").on("mousedown", function(e) {
console.log("outer div mousedown")
});
#outer {
background-color: green;
padding: 50px;
display: inline-block;
}
#inner {
height: 0px;
padding: 20px;
background-color: red;
width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outer">
<div id="inner">
</div>
</div>