挂起时的settimeout

时间:2009-06-03 12:17:36

标签: jquery

我正在尝试使用jquery的悬停来清除set变量(timer)上的一个超时(cleartimeout),然后在鼠标离开元素时再设置另一个(settimeout)。关于如何做到这一点的任何想法?

到目前为止我的代码(不起作用!!!!)是:

            $(function() {

            $('ul.contact').hover(function() {

            $(this).clearTimeout(timer).animate({ 'opacity' : 0.7});
            }, function() {
            $(this).setTimeout( function()
                            {
                            $('ul.contact').fadeOut('slow');
                            }, 8000);
                            });
            timer = setTimeout(function() {
                $('li#contact').removeClass('cur');
                $('li#$url').addClass('cur');
                }, 8625);


}); 

4 个答案:

答案 0 :(得分:6)

setTimeout()和clearTimeout()是(全局)窗口对象的函数,因此应该在没有对象的情况下调用它们。在您的示例中,删除“$(this)”。在调用setTimeout和clearTimeout

之前

答案 1 :(得分:4)

您也无法将.animate()来电链接到您正在尝试的clearTimeout()

答案 2 :(得分:2)

hoverIntent jQuery插件可能有所帮助。它允许您调整鼠标悬停的灵敏度:

http://cherne.net/brian/resources/jquery.hoverIntent.html

......我怀疑你正在尝试做什么。

答案 3 :(得分:0)

我意识到我没有为我想要显示的实际元素设置另一个变量。现在已经设置了另一个变量,所有这些变量都适用于新代码:

非常感谢提示,但也包括在内!

            $(function() {

            $('ul.contact').hover(function() {

            clearTimeout(display);
    clearTimeout(timer);
    $(this).css('display', 'block');
            }, function() {
            $(this).fadeOut('slow');
            $('li#contact').removeClass('cur');
            $('li#$url').addClass('cur');
            }); 

});