jQuery悬停事件,防止功能被完全执行
首先,我觉得这个有点难以解释,因为英语不是我的母语。所以请原谅。jQuery悬停事件,防止功能被完全执行
我写了一个小的通知函数,它在表单提交时触发。正常行为是:
- 用户提交表单
- 注淡入
- 延迟2秒
- 注淡出
当音符盘旋,它扩展了css-transition
。从逻辑上讲,它不应该淡出,直到用户将其折叠mouseleave
。 而这里存在我的问题:只要div被徘徊,我如何防止fadeOut
声明被执行?
我想是这样
if ($('#notification').hover()){
return ;
}
但当然,第一条语句已经excuted如下所示:
我也尝试了一些其他的东西,比如一个单独的脚本正在收听hover
事件,然后致电$('#notification').show() ;
两者都不起作用。我知道这是推理中的一个简单错误,但是地狱,我被卡住了。
在此先感谢。
的fadeIn
通话setTimeout
后,用一个函数:
- 如果通知被折叠,隐藏它。
- 否则,使用
.mouseleave
隐藏鼠标焦点后隐藏它。
即:
$('#notification').fadeIn(500);
setTimeout(function() {
if (notification_is_collapsed)
$('#notification').fadeOut(500);
else
$('#notification').mouseleave(function() {
$('#notification').fadeOut(500);
});
}, 2000);
悬停功能需要两个参数:当鼠标进去,而当鼠标离开(http://api.jquery.com/hover/)
所以你可以做这样的事情,而不是:
$('#notification').hover(
function() {}, function() {
$(this).delay(500).fadeOut(500);
});
这里是你的jsfiddle更新:http://jsfiddle.net/6DsJb/1/
谢谢,但这只能在没有自动装填的情况下运行,所以用户必须明确地悬停注释才能摆脱它。我与延迟autofade结合使用,但它仍然覆盖它。 – Sprottenwels 2012-07-11 06:33:00
对不起,但我不明白这一点。 is_collapsed是不是表示这个音符已经消失了,如果不是,它不会和mouseleave动作一样吗? – Sprottenwels 2012-07-11 06:35:47
'notification_is_collapsed'应该被替换为评估在2秒钟过去之前笔记是否已经被折叠的东西。 – WhyNotHugo 2012-07-11 11:45:51
再次感谢,我明白了,虽然有点不同: http:// pastebin。com/6gpJTgKc – Sprottenwels 2012-07-12 14:21:09