我个人喜欢“hoverIntent”插件:
http://cherne.net/brian/resources/jquery.hoverIntent.html
来自页面:hoverIntent 是一个试图确定用户意图的插件......就像一个水晶球,只有鼠标移动!它的工作方式类似于(并且源自)jQuery 的内置悬停。但是,它不会立即调用 onMouseOver 函数,而是等到用户的鼠标速度足够慢后再进行调用。
为什么?延迟或防止意外触发动画或 ajax 调用。简单的超时适用于小区域,但如果您的目标区域很大,它可能会执行而不管意图。
var config = {
sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
interval: 200, // number = milliseconds for onMouseOver polling interval
over: makeTall, // function = onMouseOver callback (REQUIRED)
timeout: 500, // number = milliseconds delay before onMouseOut
out: makeShort // function = onMouseOut callback (REQUIRED)
};
$("#demo3 li").hoverIntent( config )
配置选项
灵敏度:
如果鼠标在轮询间隔之间移动的像素数少于该像素数,则将调用“over”函数。最小灵敏度阈值为 1 时,鼠标不得在轮询间隔之间移动。使用更高的灵敏度阈值,您更有可能收到误报。默认灵敏度:7
间隔:
hoverIntent 在读取/比较鼠标坐标之间等待的毫秒数。当用户的鼠标第一次进入元素时,它的坐标被记录下来。最快可以调用“over”函数是在单个轮询间隔之后。将轮询间隔设置得更高会增加第一次可能的“过度”调用之前的延迟,但也会增加到下一个比较点的时间。默认间隔:100
结束:
必需的。您要调用 onMouseOver 的函数。您的函数接收与 jQuery 的悬停方法相同的“this”和“event”对象。
超时:
调用“out”函数之前的简单延迟,以毫秒为单位。如果用户在超时到期之前将鼠标移回元素上,则不会调用“out”函数(也不会调用“over”函数)。这主要是为了防止马虎/人类鼠标轨迹暂时(和无意地)使用户离开目标元素......让他们有时间返回。默认超时:0
出局:
必需的。您要调用 onMouseOut 的函数。您的函数接收与 jQuery 的悬停方法相同的“this”和“event”对象。请注意,只有在同一次运行中调用了“over”函数时,hoverIntent 才会调用“out”函数。