2009-06-03 114 views
2

我想使用jquery的悬停清除一个设置变量(定时器)的超时(cleartimeout),然后设置另一个(settimeout)一旦鼠标离开元素。任何想法如何做到这一点?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); 


}); 

回答

6

的setTimeout()和clearTimeout()是在(全球)窗口对象的功能,所以他们应该叫没有物体。在你的例子中,删除“$(this)”。在拨打setTimeout和clearTimeout之前

4

您也不能链接.animate()呼叫clearTimeout()像你想要的那样。

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'); 
      }); 

});