Jquery mousemove()在没有鼠标移动的情况下被激活

时间:2010-06-27 22:34:54

标签: jquery fadeout mousemove

我正在尝试像淡入淡出一样google.com(Cept我想淡出文字)

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
  $(document).ready(function() {
    $("html").mousemove(function () {
      $("p").fadeOut("slow");
    });
  });
</script>

使用该代码,虽然我没有移动鼠标,但我的淡出会自动激活。适用于所有浏览器。有什么提示吗?

3 个答案:

答案 0 :(得分:5)

由于事件最初触发一次并且mousemove每次移动像素时都会触发,您可以忽略第一个(可能是自动的,取决于浏览器)mousemove事件来获得效果希望,像这样:

$(function() {
  var moveCount = 0;
  $("html").mousemove(function () {
    if(moveCount++ === 0) return; //first run?
    $("p").fadeOut("slow");
    $(this).unbind('mousemove'); //unbind this, no need to stick around
  });
});​

You can try a demo here,我们所做的只是忽略非常首次触发mousemove事件,之后我们执行淡入淡出并取消绑定此处理程序,以便它不会为未来的mousemove解雇,只是清理。

答案 1 :(得分:1)

似乎如果页面加载并且页面加载后鼠标出现在页面上,它将触发一个事件。尝试将鼠标悬停在地址栏上或浏览器顶部菜单上的某处,将鼠标从页面中隐藏,使用F5刷新页面并注意事件未被触发。同样,尝试使用F5刷新并立即右键单击页面。将鼠标悬停在页面上,但请确保上下文菜单仍处于打开状态。页面加载后,根本不移动鼠标,点击键盘上的Escape键,鼠标将退出上下文菜单并返回页面。鼠标尚未移动但已在页面上检测到并触发了事件。

在Windows 7上的Chrome 5中测试过。懒得尝试其他浏览器,但我认为它是一样的。

答案 2 :(得分:0)

你确定没有'微动作'吗?有时,光学鼠标会导致移动仅仅是灰尘或污垢。