jQuery Hover事件,防止函数被完全执行

时间:2012-07-10 12:20:23

标签: jquery hover

首先,我发现这个有点难以解释,因为英语不是我的母语。请原谅这个烂摊子。

我写了一个小通知函数,它在表单提交时触发。正常行为是:

  • 用户提交表单
  • 注意淡入
  • 2秒延迟
  • 注意淡出

当音符悬停时,它会扩展css-transition。从逻辑上讲,它应该在用户按mouseleave折叠之前淡出。 这就是我的问题:只要div被徘徊,我如何阻止执行fadeOut语句?

我试过像

这样的东西
if ($('#notification').hover()){
    return ;
}

但当然,第一个陈述已经如此处所示:

http://jsfiddle.net/6DsJb/

我还尝试了其他一些内容,例如正在聆听hover事件的单独脚本,然后调用$('#notification').show() ;

两者都不起作用。我知道这是推理中的一个简单错误,但是地狱,我被卡住了。

提前致谢。

2 个答案:

答案 0 :(得分:1)

fadeIn来电setTimeout之后,其功能为:

  • 如果通知已折叠,请将其隐藏。
  • 否则,一旦鼠标失去焦点,请使用.mouseleave隐藏它。

即:

$('#notification').fadeIn(500);

setTimeout(function() {
  if (notification_is_collapsed)
    $('#notification').fadeOut(500);
  else
    $('#notification').mouseleave(function() {
      $('#notification').fadeOut(500);
    });
}, 2000);

答案 1 :(得分:1)

悬停功能有两个参数:当鼠标进入时,以及鼠标熄灭时(http://api.jquery.com/hover/

所以你可以这样做:

$('#notification').hover(
function() {}, function() {
    $(this).delay(500).fadeOut(500);
});

这是你的jsfiddle更新:http://jsfiddle.net/6DsJb/1/