0

ここで問題を解決しようとしています。

次の jQuery スクリプトは、私のドロップダウン メニュー用です。

私が遭遇した1つの問題があることを除いて、次のコードはすべてうまく機能します。

.drop クラス 'a' リンクの 1 つをクリックしてドロップダウンを取得すると、以下のコードにリストされているすべてのアニメーションが表示されます。残念ながら、別の .drop class 'a' リンクをクリックしても、他のドロップダウンは消えません。

使ってみまし たが、すぐに消えて$("ul.dropdown").hide();アニメーションがキャンセルされます。if(theDropState){ .. }

それ自体を非表示にするための解決策を見つけるのを手伝ってくれる人はいますが、if(theDropState){ .. }アニメーションが完了した後ですか?

コールバック関数を入れてみまし$("ul.dropdown").hide();たが、それもうまくいきませんでした。

    $(".drop").click(function(event) {
  var theDrop = $(this).next("ul.dropdown");
  theDropState = theDrop.is(':visible');

  if(theDropState){ 
    theDrop.stop(true,true).animate({ height: 'hide' }, '200'); 
    $('#header').stop(true,true).animate({ height: '50px' }, '200', function(){
          $("ul.dropdown").hide();
    });
  }
  else if(!theDropState){
    theDrop.stop(true,true).animate({ height: 'show', opacity: 'show' }, '200') 
    $('#header').stop(true,true).animate({ height: '100px' }, '200') 
  }

ありとあらゆる助けをいただければ幸いです。

4

2 に答える 2

0

コールバックを使用する

$('#foo').animate({height: '200px'}, 200, function(){ /*  do stuff */ });
于 2012-06-05T07:53:10.647 に答える
0

jQuery animateは、完了するとコールバック関数を取得できます。コールバックで実行したいものを渡すだけです。

.animate({ height: '50px' }, '200', function() {
  // do stuff here 
 });
于 2012-06-05T07:53:50.127 に答える