【问题标题】:jquery mouse events conflict?jquery鼠标事件冲突?
【发布时间】:2012-11-10 12:49:49
【问题描述】:

我正在尝试在我的一个 div“相册”上进行拖动和滚动,这是一个图像列表。

这就是我所做的

$(album).on({
    mousedown:function(){
        console.log('mousedown');
        $(album).on('mousemove', function(){
            console.log('mousemove')
        })
    }

    mouseup:function(){
        console.log('mouseup');
        $(album).off('mousemove');
    }

})

这里发生的情况是,在鼠标按下后,它会追踪 'mousemove' 大约 4 或 5 次,然后它会停止追踪,并且会出现一个小的无操作图标以及我单击的图像的透明版本。然后,如果我在这里放开鼠标,它就不会追踪到'mouseup'。但是,如果我单击 div 并且不移动鼠标然后放开,它会追踪“mouseup”。

为什么控制台不继续跟踪鼠标移动,为什么不跟踪 mouseup?谢谢。

【问题讨论】:

  • 我有一个完整的例子给你:)
  • 你对这个人有什么好运吗?
  • 我有一个理论,上面代码中的错误是由于 click 事件只触发一次并且您希望 mousemove 上的持续状态。 VIDesign 通过阻止 click 事件的默认行为解决了这个问题,我通过为 mousemove 事件创建依赖关系解决了这个问题。由你决定你喜欢哪个答案。

标签: jquery mouseevent


【解决方案1】:

给你,伙计!完美!!

工作Fiddle

HTML

<div class='album'></div>

JQuery

$('body').on('mousedown', '.album', function(e){
    e.preventDefault();
    console.log('mousedown');

    $(this).on('mousemove', function(){
       console.log('mousemove');
    });

    $(this).on('mouseup', function(){
       $(this).off('mousemove');
       console.log('mouseup');  
     });

});

【讨论】:

  • 非常感谢!但是为什么我必须阻止默认操作才能使这项工作?
  • @shibbydoo 欢迎您!我不能肯定地说......当我测试你的原件时,我每隔一个 mousedown 就得到 mousemove 日志,所以我认为 mousedown/mouseup 会干扰标准点击功能。这只是猜测。如果我们记录所有鼠标事件以查看它们如何真正相互反应,我相信我们可以弄清楚。但就目前而言,我会说“拿走你能得到的”! :)
【解决方案2】:

如果我们以不同的方式来处理它会怎样:

var itIsClicked;

$(album).on("mousedown", function(){
    itIsClicked = true;
});

$(album).on('mousemove', function(){
    if(itIsClicked) {
        console.log('mousemove');
    }
});

$(album).on("mouseup", function(){
    itIsClicked = false;
});

嵌套事件虽然看起来很有意义,但可能会遇到您所描述的那种麻烦。虽然我很想听听关于它为什么不适合你的任何理论。

【讨论】:

  • 似乎如果我们阻止默认点击操作,它就会清理干净。当我在上面弄乱我的答案时,没有阻止默认值,它在您第一次单击、拖动、释放时起作用,但随后它以某种方式翻转了功能。当您单击时,它不起作用,但是当您在不按住按钮的情况下移动鼠标时,它会注册鼠标移动。但无法真正解释原因。
  • 我已经测试了我们的两个答案,似乎它们都有效。我们将不得不运行测试以查看应该接受哪些答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多