2

ウェイポイントの無限スクロール プラグインを使用してコンテンツをロードするページがあります。

AJAX 呼び出しが成功し、DOM 要素が追加された後、コールバックが実行され、カルーセル、ボタン、その他のアニメーションなどの JavaScript 機能が再初期化されます。

最初の AJAX 呼び出しで、切り替えを行うボタンが適切に機能します。次の AJAX 呼び出しでは、新しい DOM 項目が機能しますが、前のボタンをクリックするとトグルが 2 回実行されるようになりました。3 回目の呼び出しでは、元のアイテムが 3 回実行され、2 番目のアイテムが 2 回実行され、新しいアイテムが 1 回実行されるというように、4 回目というように、AJAX コンテンツが呼び出されると複合化が続けられます。

以前にロードされたコンテンツに影響を与えないようにコールバックを分離するにはどうすればよいですか? または、毎回コールバックが必要ないように、JS のグローバル状態を設定する方法はありますか?

擬似コード:

$('.infinite-container').waypoint('infinite', {

    onAfterPageLoad: function() { 

        //Carousel options     
        $('.carousel-container').carousel({
            options: here,
            ....
        }); 

        //Button Toggles
        $('.button').click(function(){

            var self = $(this); 

            $(this).siblings('.caption').animate({ 

               height: 'toggle'

               }, 200, function() {

                 // Callback after animate() completes.
                 if(self.text() == 'Hide Details'){

                   self.text('Show Details');

                 } else {

                   self.text('Hide Details');
                 }
            }); 
        }); 

     }   
});    

編集:みんなありがとう。すべての答えは、異なるが適切な解決策に私を導きます。選択されたものは、提案されたすべての問題の優れたコレクションであり、読む価値があるため選択されました。

4

4 に答える 4