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

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

  $(document).ready(function() { $("html").mousemove(function () { $("p").fadeOut("slow"); }); });  

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

由于事件最初触发一次并且每次移动像素时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 }); });​ 

你可以在这里尝试一个演示 ,我们所做的只是忽略了mousemove事件的第一次触发,然后我们执行淡入淡出并取消绑定此处理程序,以便它不会运行以便将来的mousemove ,只需清理。

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

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

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