如果在子div上单击开始并在父级结束时如何防止单击事件(Chrome bug)

时间:2014-11-28 17:25:39

标签: javascript jquery google-chrome javascript-events

如果用户开始点击子<div>,我会尝试阻止点击事件在父<div>上触发,然后将鼠标从子<div>移出,但不要离开父<div>同时仍然按住它,然后在父母身上释放。

父母和孩子都有分配有event.stopPropagation()的jquery点击事件。

如果我在最初按下鼠标的<div>之外释放鼠标,那么根本没有点击事件被触发。

至少这是它适用于FF和Safari的工作方式,但不适用于Chrome。

按钮按照应有的方式工作,而不是。也许我可以从按钮中复制一些魔法并应用于div?

http://jsfiddle.net/zd7L68b2

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

1 个答案:

答案 0 :(得分:0)

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

http://api.jquery.com/mousedown/

我在你的jsfiddle上尝试了它并且它有效。然而,你失去了完整的点击,你只得到了mousedown(可以说是“一半”)。

像这样:http://jsfiddle.net/zd7L68b2/4/

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