2011-07-18 17 views
0

を失敗した場合でも、コールバックを実行します。はjqueryの文は次のように私はjQueryの文を持って

$('.panel.col2, .panel.col3').fadeOut('fast', function(){ 
    //SOME CODE 
}); 

問題は、これらの要素が常に存在していない、と私はそれに関係なくの成功のコールバックを実行する必要があるということですコールバックが属するステートメント。この問題を回避する方法はありますか?

+5

を、それはその後、本当にコールバックではないように聞こえますか? –

+0

要素が削除された後に常に実行する必要があるということです。 – nkcmr

答えて

1

このような何か試してみてください:

function myCallback(){ 
    //SOME CODE 
} 

if($('.panel.col2, .panel.col3').length>0){ 

    $('.panel.col2, .panel.col3').fadeOut('fast', function(){ 
     myCallback(); 
    }); 
} else { 
    myCallback(); 
} 
+0

これはもう少し整理されています。だから、私はそれをアナスウェーとして選んだのです。 – nkcmr

+1

@sightofnick ...同じコードブロック内で同じjQueryセレクタを複数回使用すると、ループが追加されるため、実際には効率が低下します。単にjQueryオブジェクトを変数に格納してから変数を使用する方が効率的です。例:var mypanelelement = $( '。panel.col2、.panel.col3');これで、jQueryを強制的に検索する代わりに、変数mypanelelementを使用して要素を再度検索できます。 –

+0

@John Hartsock:もちろん正しいですが、コードにも弱点があります。ドキュメントが読み込まれ、このコードがもっと早く読み込まれたときにのみ関数を定義します。もちろん、関数内のコードの相補性に依存します。とにかくそれはパフォーマンスのキックです。 P.S.はい、私は準備が整った文書の中にすべてをラップする必要があります。知っている :)。 – avall

1

fadeOutのコールバックで、コードがフェードアウトする要素がない場合は、コードを実行したいと思うようです。ここにアイデアがありますが、私はあなたがしようとしていることのコンテキストを知らない。

$(document).ready (function() { 
    var panelElement = $('.panel.col2, .panel.col3'); 
    var fadeOutCallBack = function(){ 
    //SOME CODE 
    }; 
    panelElement.fadeOut('fast', fadeOutCallBack); 
    if (panelElement.length == 0) { 
    fadeOutCallBack(); 
    } 
}); 
関連する問題