2011-07-27 15 views
3

コンテンツをロードするJavaScriptメニューが、問題のコンテンツが読み込まれ、.show( 'ブラインド'を介して展開される前にコマンドでオーバーランしないようにします。 500)、アニメーションは何度も実行されているので、それほど大きくは見えません。だから私はこのように見える約6つのセレクタを持っています:jQueryセレクター:not(:animated)

("#center_content:not(:animated)") 

そして、それは効果がないようです。試してみます:animatedは期待された効果があります(アニメーションを開始しないため動作しません)。試してください:not(div)もこの効果を持ちます。#center_contentはdivなので、何らかの理由で、:not(:animated)は結果の変更をしていないようですが、問題のdivが表示されている間にselectorをトリガーしても、コードが実行されるためです。私はこれまでにこの種のもので成功したことは分かっていますが、ここでの違いは私には分かりません。


$("#center_content:not(:animated)").hide("blind", 500, function() { 
    var selector_str = 'button[value="' + url + '"]'; 
    //alert(selector_str); 
    var button = $(selector_str); 
    //inspectProperties(button); 
    $("#center_content:not(:animated)").load(url, CenterContentCallback); 
    if (button) { 
     $("#navigation .active").removeClass("active"); 
     button.addClass("active"); 
     LoadSubNav(button); 
    } 
}); 

私は、これは十分なコンテキストを提供したいと考えています。私は2番目のセレクタが残酷である(最初のセレクタが成功した場合にのみ実行されるため)ので、このように動作するようになるかどうかはわかりません。


ここでは、他のコンテキストで動作しているように見えたスニペットです:ここで

function clearMenus(callback) { 
     $('[id$="_wrapper"]:visible:not(:animated)').hide("blind", 500, function() { 
      $('[id^="edit_"]:visible:not(:animated)').hide("slide", 200, function() { 
      callback(); 
      }); 
     }); 
} 

は、アニメーションは、キューの代わりに、お互いを中断し、セレクタがまだないことを私に起こります動作しているようです - アニメーションと関連付けられたロードイベントは、セレクタが失敗するため、すべてで実行してはいけません。キューイングはアニメーションが表示されるのにはいい動作ですが、このセレクタが動作することは決してなかったようです。何か不足していますか?

+1

は、ページで使用されるあなたのjsの一部を投稿することができますか? – ShankarSangoli

+0

同じ要素のために一度に複数のアニメーションに問題がありますか? –

+2

ちょっとした制限がある場合は、$( "#center_content")を試しましたか?( ":animated") '? –

答えて

1

.stop()を使用して、新しいアニメーションを開始する前に現在のアニメーションを停止すると便利なことがあります。

$("#center_content").stop().hide("blind", 500, function() {}); 

あなたの環境内ではどのように動作するかによって異なります。 .stop()は、そのままアニメーションを停止することを覚えておいてください。(例えば、隠れやフェードアウトの途中など)

0

私は正しく理解しているかどうかわかりませんが、ユーザーがメニューアニメーションをトリガーしないようにするにはそれは現在のアニメーションだ再びながら(それはアニメーションをキュー遅調べるようにする、これが動作し、役立つはずです。私はif-statementを使用しています。そして、すべてのマウスオーバー/オフアニメーションの前に私は.stop(false, true)を追加します。

$('whatever').click(function(){ 
     //if center_content is not currently animated, do this: 
     if ($("#center_content").not(":animated")) { 
     $(this).hide(etc. etc. etc.) 
     } 
     //else if center_content IS currently animated, do nothing. 
     else { 
     return false;} 
    }); 

別の例私は他の場所に見つかりました:

if($("#someElement").is(":animated")) { 
    ... 
} 

if($("#someElement:animated").length) { 
    ... 
} 

// etc 

その後、あなたが行うことができます:

$("#showBtn").attr("disabled", $("#someElement").is(":animated"));