2011-10-28 8 views
0

私はいくつかの要素がアニメーション化されています。サブメニューをすばやく前後に移動すると、キューがあり、最悪の場合、機能が壊れているようです。私はすでに試しましたstop()delay():animatedです。jquery animate(いくつかの要素)キュー

あなたはそれを実現するために何をお勧めしますか?

jQuery('.submenu').hover(
    function(){ 
    jQuery(this).find('.ico').delay(100).animate({ 
     height: 24 
     }, 'fast', function() { 
      jQuery(this).parents('.submenu').find('ul').animate({ 
       height: 'toggle' 
       }, 'slow', function() { 
      }); 
    }); 

}, 
function(){ 
    jQuery(this).find('ul').delay(100).animate({ 
     height: 'toggle' 
     }, 'fast', function() { 
      jQuery(this).parent().find('a.submenuItem .ico').animate({ 
       height: 18 
       }, 'fast', function() { 
       }); 
    }); 
}); 

HTML

<li class="submenu"><a href="" class="submenuItem">About<span class="ico">more</span></a> 
      <ul> 
       <li><a href="#">Corporate</a></li> 
       <li><a href="#">Facts</a></li> 
       <li><a href="#">Press</a></li> 
       <li><a href="#">Franchising</a></li> 
       <li><a href="#">Sponsoring</a></li> 
       <li><a href="#">Contact</a></li> 
      </ul> 
     </li> 
+0

私は通常、このような場合にはstop()を使用します。 jsFiddleを作成した場合は、コード内をぶち壊します。 – maxedison

+0

@maxedison試してみよう! – lijn

+0

@maxedison http://jsfiddle.net/qGG53/10/ – lijn

答えて

1

あなたは.clearQueue()メソッドを試したことがありますか?

clearQueue() documentation

+0

また、stop()メソッドを使用して、必要なものを達成する必要があります。http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-待ち行列の構築 – FlabbyRabbit

+0

ありがとうございます。私はjQuery(this).find( '.ico')を試しました。すべてのバリアントでstop(true、false).animate ...私はjQuery(this).find( '.ico')を試しました。 clearQueue()。animate ..私はドキュメントをすばやく読みましたが、正しいかどうかはわかりません。しかし、それは少し助けているようだが、ときどき立ち往生して再び開かないように見える。私はすべてのアニメ - メソッドでそれを設定する必要があるかどうか分からない。 – lijn

+0

私はすでにラーニングジュエリーへのリンクを試みましたが、大きな助けとなると思っていましたが、それはいい記事ですが、この状況で私を助けなかったのです。 – lijn

1

この質問は本当に解決されることはありません。ですから、その間に私はプラグインとしていくつかのスクリプトを使いました。これが助けになりました。今はアニメーションがはるかに良くなっており、時間がかからないようです。余分なスクリプトはhoverIntentです:

https://github.com/diaspora/jquery-debounce

上記のようにあなたも).clearQueue(に基づいて独自のソリューションを書くことができます。http://cherne.net/brian/resources/jquery.hoverIntent.html

0

jQueryのデバウンサはそれをすべて行います。

関連する問題