Javascript点击和mousedown冲突

Rut*_*rde 17 jquery event-handling mouseevent jquery-events

我有一个特定的场景,我正在使用click插入div然后mousedown在该div上拖动它.我绑定click到父容器,并mousedown在div本身.但是当我mousedown在div上时,它也会触发父对象的点击,因此插入多个div而不是拖动已经添加的div!

有没有办法解决这个问题?我无法解除绑定click,因为我需要使用它添加2个div click,然后绑定mousedown这些.

更新:我正在使用selector.on(event, handler)绑定类型.

Yog*_*ran 16

试试这种方式.因为event.stopPropagation不会停止鼠标按下事件事件.鼠标按下和单击事件彼此无关.

var mousedownFired = false;

$("#id").on('mousedown', function(event) {
    mousedownFired = true;
    //code
});

$("#id").on('click', function(event) {
    if (mousedownFired) {
        mousedownFired = false;
        return;
    }
    //code
});
Run Code Online (Sandbox Code Playgroud)

更新:

.鼠标事件就像这样触发

1)MouseDown

2)点击

3)MouseUp

如果触发鼠标按下,则在触发鼠标按下事件后将启用标志.在此单击事件将禁用标志变量.这将作为循环方式工作.不要考虑两个鼠标按下或两次点击

  • 你确定这是触发鼠标事件的方式吗?我认为顺序是向下,向上,然后单击 - '$('body').on('click mouseup mousedown',function(evt){console.log(evt.type)}) (4认同)
  • @ lfender6445是正确的 - 或者至少,我刚刚在Chrome中测试过,我得到了mousedown,mouseup,然后点击. (2认同)