jquery:在效果之前添加延迟
我的网站上有浮动框。我在 mouseenter 上显示它并在 mouseleave 上隐藏它。像这样:
$(box).mouseenter(function(evt) {showBox();});
当
$(what).parent().mouseleave(function(evt) {hideBox();});
我将鼠标快速移动到“框”上时,它就会显示出来。 这种情况下怎么不显示呢? 谢谢。
I have floating box on my site. I show it on mousenter and hide onmouseleave. Like this:
$(box).mouseenter(function(evt) {showBox();});
and
$(what).parent().mouseleave(function(evt) {hideBox();});
When I perform quick mouse move over the "box" it shows up.
How not to show it in that case?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我发现 bindWithDelay 插件对于此类场景非常有用。
编写如下内容非常容易:
这会在事件触发之前增加 500 毫秒的延迟。当事件多次触发时,它处理必须设置/取消/重置计时器的所有管道。
(它还支持一个方便的节流选项,适用于更复杂的情况,您可以在链接中阅读有关内容)
I found the bindWithDelay plugin very useful for these kinds of scenarios.
It's vey easy to write something like:
This adds a 500ms delay before the event fires. It handles all the plumbing of having to set/cancel/reset timers when the event fires multiple times.
(It also supports a handy throttling option for more complicated situations that you can read about in the link)
使用 setTimeout() 包装函数调用,
其中 1000 表示 1 秒。 (1000 毫秒 = 1 秒)
编辑:
这可能比我想象的要复杂一点。如果鼠标快速移出,您必须防止它显示。
Wrap your function call with setTimeout()
where 1000 is 1 sec. (1000 milisecond = 1sec)
Edit:
This might be a little more complicated then I thought. You have to prevent it from ever showing if mouse out quickly too.