【问题标题】:How to trigger mousemove event only when mouse move如何仅在鼠标移动时触发 mousemove 事件
【发布时间】:2014-09-18 05:45:14
【问题描述】:

在我的example 事件触发中,即使鼠标没有移动而是在容器内。

var page = $('.Page'),
    consoleContainer = $('.Console');

page.mousemove(null, function(e){
    var mousePosX = (e.pageX/$(window).width())*100;
    consoleContainer.val('mousePos: ' + mousePosX + ' randomNumber: ' + Math.random());
});

我想要的: 如果鼠标没有移动但在容器内,则事件不应该工作

PS:对不起我的英语水平

【问题讨论】:

  • 如果将光标放在灰色区域内并刷新页面...该事件触发。你到底想要什么?
  • 刷新后仍然生成随机数,即使光标在灰色区域内
  • 你是对的,但你应该提到这只是 Chrome 的情况。
  • 哦...谢谢@RokoC.Buljan。我认为这个问题可以结束了。

标签: javascript jquery mouseevent mousemove onmousemove


【解决方案1】:

您可以保存上一个光标位置,并在触发 mousemove 事件时检查它是否等于当前鼠标位置。

这样的事情应该可以按预期工作:

var page = $('.Page'), consoleContainer = $('.Console');
var prevPos = '';

page.mousemove(null, function(e)
{
    var currPos = e.pageX + '-' + e.pageY;

    if (prevPos != currPos)
    {
        prevPos = currPos;
        var mousePosX = (e.pageX / $(window).width()) * 100;
        consoleContainer.val('mousePos: ' + mousePosX + ' randomNumber: ' + Math.random());
    }
});

【讨论】:

  • 我不知道发生了什么,但我的代码在我的工作机器上不起作用。现在我在家里对其进行了测试-一切正常。这只是我不知道的错误或smth。
  • 您是否使用相同的浏览器进行测试(也是相同的版本)?
猜你喜欢
  • 2012-02-04
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
相关资源
最近更新 更多