2009-06-03 55 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'); 
      }); 

});