我在div上有双击事件处理程序,并在按钮上单击事件处理程序,即div的子项。
但当我点击按钮2次时,会发生div的dblclick事件(见http://jsfiddle.net/9dcSk/3/)。
<!DOCTYPE html>
<html>
<head>
<script src="/bs21/js/jquery-1.10.1.min.js"></script>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<style type="text/css">
body,html {
background:yellow;
}
.myDiv {
background:pink;
padding:40px;
}
</style>
<script>
$( document ).ready( function() {
$('div.myDiv').click( function() {
console.log('div dbl clicked');
} );
$('button.myButton').click( function(event) {
console.log('button clicked');
} );
});
</script>
</head>
<body>
<div class=myDiv>test<button class=myButton>ok</button></div>
</body>
</html>
我试图将e.stopPropagation()
添加到点击事件中,但这没有用。
答案 0 :(得分:6)
你应该做的是在div调用之前双击按钮返回false。
那是:
$('button.myButton').click( function(e) {
$('div#log').append('<div>btn clicked</div>');
});
$('button.myButton').dblclick( function(e) {
return false
});
$('div.myDiv').dblclick( function(e) {
$('div#log').append('<div>div dblclicked</div>');
});
答案 1 :(得分:0)
这可以解决问题。
$('div.myDiv').dblclick( function(e) {
if(e.target.nodeName === "BUTTON" ){
return false;
}
$('div#log').append('<div>div dblclicked</div>');
});
$('button.myButton').click( function(e) {
$('div#log').append('<div>btn clicked</div>');
});