jquery dblclick事件无法停止事件传播

时间:2013-07-16 10:52:47

标签: javascript jquery

我在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()添加到点击事件中,但这没有用。

2 个答案:

答案 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>');
});

JSFIDDLE:http://jsfiddle.net/javascript/9dcSk/5/

答案 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>');
   });

Fiddle Demo

相关问题