0

私のコードでは、次のように各カルーセル アイテムのオブジェクトをアニメーション化しています。

first_text1.fadeTo(textDuration, 1, function(){
    second_text1.fadeTo(textDuration, 1);
});

スライドが変わると、$animationsアニメーションが追加されたすべてのオブジェクトが含まれる次のように呼び出します。

$animations.stop(true, true);

そして、私は呼び出します:

$animations.each(function() {
    $(this).removeAttr('style');
}); 

アニメーションによって残されたインライン CSS を削除して、そのスライドに戻ったときにアニメーションを繰り返すことができるようにします。

私の問題は、上記のコードにある 2 番目のコールバック アニメーションからスタイルが削除されないことsecond_text1です。

どうすればこれを修正できますか?

4

2 に答える 2

2

を見ずに、なぜ'sスタイルが削除されていないの$animationsかを言うのは難しいです。しかし、個人的な経験から、アニメーションの過程にあるオブジェクトしか見つからないsecond_text1という問題があることに気づきました。jQuery(':animated')アニメーションが完了した瞬間、オブジェクトは考慮されなくなります:animated

そうは言っても、アニメーション化する各オブジェクトにクラスを追加し、それをではなくセレクターとして使用することをお勧めします$animations

したがって、次の変更を行います。

  1. この場合、アニメーションの前にクラスを追加します.fadeTo()

    first_text1.addClass('animatedClass').fadeTo(textDuration, 1, function(){
        second_text1.addClass('animatedClass').fadeTo(textDuration, 1);
    });
    
  2. $animationsクラスに変更

    $('.animatedClass').stop(true, true);
    
    $('.animatedClass').each(function() {
        $(this).removeAttr('style');
    }); 
    

デモ:http: //jsfiddle.net/GVjBn/19/

これがあなたが探しているものであることを願っています。他にご不明な点がございましたら、お気軽にお問い合わせください。

ハッピーコーディング!

于 2013-01-04T16:22:34.137 に答える
1

ここでの問題は、変数のセレクターであることが判明しました。一部の変数には複数の変数がありました。

例えば

var first_text2 = $('li#region-2 .text-elements h2, li#region-2 .text-elements h3');
var second_text2 = $('li#region-2 .text-elements p');

removeAttr関数は、変数内のすべての要素で正しく機能していませんでした。これを修正するために私は電話しなければなりませんでした

first_text2.each( function() {
    $(this).removeAttr('style');
});

もともと私の質問にこれ以上コードを表示しなかったことをお詫びします!!

于 2013-01-07T10:20:39.530 に答える