我有一个绑定,我想控制得更好。.这是代码的第一篇:

 $('#topnav').bind({

                            mouseenter: function() {
                                $("#topnav").animate({opacity: 1.0, width: '98%', height: '38px'});
                            },
                            mouseleave: function() {
                                   $("#topnav").delay(2000).animate({opacity: 0.9, width: '310px', height: '33px'});
                            }

                            });


当前,您看到我正在延迟mouseleave,因为此人正在“进入”的导航栏很小,并且如果鼠标碰巧停留了一秒钟,就会触发mouseleave事件。我想更好地控制它。我想要某种类型的if语句,它表示“如果鼠标离开#topnav div少于三秒钟并重新进入,请假装鼠标永远不会离开”

如果这没有意义,我会澄清。

谢谢!

最佳答案

您可以使用setTimeout()clearTimeout()实现此目的:

var tout;
$('#topnav').bind({
  mouseenter: function() {
    clearTimeout(tout);
    $("#topnav").animate({opacity: 1.0, width: '98%', height: '38px'});
  },
  mouseleave: function() {
    tout = setTimeout(function() {
      $("#topnav").animate({opacity: 0.9, width: '310px', height: '33px'});
    }, 2000);
  }
});

07-24 16:32