Javascript 如果单击开始于子div,结束于父div,如何防止单击事件(Chrome bug)

Javascript 如果单击开始于子div,结束于父div,如何防止单击事件(Chrome bug),javascript,jquery,google-chrome,javascript-events,Javascript,Jquery,Google Chrome,Javascript Events,我试图阻止单击事件在父对象上触发,如果用户开始单击子对象,然后将鼠标移出子对象,但在按住鼠标的同时不离开父对象,然后在父对象上释放鼠标 父级和子级都为jquery click事件分配了event.stopPropagation() 如果我在最初按下鼠标的区域外释放鼠标,则不会触发任何单击事件 至少它在FF和Safari上是这样工作的,但在Chrome上不是这样 按钮可以正常工作,而div不能。也许有一些魔法我可以从按钮上复制并应用到div上 $('.outer')。单击(函数(e){ log

我试图阻止单击事件在父对象上触发,如果用户开始单击子对象,然后将鼠标移出子对象,但在按住鼠标的同时不离开父对象,然后在父对象上释放鼠标

父级和子级都为jquery click事件分配了
event.stopPropagation()

如果我在最初按下鼠标的
区域外释放鼠标,则不会触发任何单击事件

至少它在FF和Safari上是这样工作的,但在Chrome上不是这样

按钮可以正常工作,而div不能。也许有一些魔法我可以从按钮上复制并应用到div上


$('.outer')。单击(函数(e){
log('Clicked outer');
});
$('.outer').moused(函数(e){
log('Clicked outer');
});
$('.inner')。单击(函数(e){
e、 停止传播();
log(“单击内部”);
});

您可以尝试绑定mousedown(),如果这样可以保持您想要的功能:

我在你的JSFIDLE上试过了,效果很好。然而,你失去了完整的点击,你得到的只是鼠标下降(“半”点击)

像这样:


不幸的是,我需要点击事件
<div class="outer">
    <button class="inner">
    </button>
    <div class="inner">
    </div>
</div>

$('.outer').click(function(e){
    console.log('Clicked outer');
});

$('.outer').moused(function(e){
    console.log('Clicked outer');
});

$('.inner').click(function(e){
    e.stopPropagation();
    console.log('Clicked inner');
});
$('.inner').mousedown(function(e){
   e.stopPropagation();
   console.log('Clicked inner');
});