2009-06-03 9 views
2

jqueryのホバーを使用して、設定変数(タイマー)でタイムアウト(クリアタイムアウト)を1つクリアしてから、マウスがその要素を離れると別の(settimeout)を設定しようとしています。これを行う方法に関するアイデア?settimeout on hover

これまでの私のコードは、(それが動作しません!!!!)です:

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

}); 
2

hoverIntent jQueryプラグインが役立ちます。それはあなたがマウスオーバーの感度を調整することができます:

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

...私はあなたがやろうとしているものである疑いがいます。