2012-03-27 19 views
0

「インビュー」カスタムイベント(https://github.com/protonet/jquery.inview)によって起動されたときに、動的に読み込まれるコンテンツ(Infinite Scrollスクリプト経由でhttp://www.infinite-scroll.com/)のスタイルを設定しようとしています。無限スクロール+ .on()関数の問題

私のコードは次のようになります。

$(document).on("inview", ".attachment-portfoliosmall", function(e) { 
    if($.data(this, "styleappended")) { 
    return true; 
    } 
    $.data(this, "styleappended", true); 
    $(".attachment-portfoliosmall").css('visibility','visible').hide().fadeIn('slow'); 
    $(".attachment-portfoliosmall").parent(".portfoliopreload").css("background", "none"); 
}); 

ご覧はっきりとわかるように、$ .dataのルーチンが.on()イベントハンドラがために複数回実行されていないことを保証するために使用されています選択フィルタの各要素

このコードは理論的にはうまくいきますが、次のページの動的に読み込まれたコンテンツがドキュメントに追加されると、新しく読み込まれるのではなく、1回の要素ごとに.on()ルーチンが実行される追加された要素。あなたは、このコードは生きている私のウェブサイトに行くことによって私が意味するものを見ることができます

:hxxp:あなたは次のページにスクロールする場合は、すべての要素がフェード//www.riddlepark.fm/

表示されます.on()イベントハンドラによって引き起こされた再開と再投入を行います。

前のページの以前に処理された要素で実行されないようにするにはどうすればよいですか?

+0

要素クラスに「読み込み」を追加してフィルタリングしたことがありますか? –

+0

あなたはコードでそれを具体化できますか? :)私は非常にjavascriptと何かがシンプルなのは難しいと思われる何か新しいです。 –

答えて

0

ここにコメントがあります。

$(document).on("inview", ".attachment-portfoliosmall", function(e) { 
    var $this = $(this); 
    if(!$this.hasClass('loaded')) { 
     $this.addClass('loaded'); 
     $this.css('visibility','visible').hide().fadeIn('slow'); 
     $this.parent(".portfoliopreload").css("background", "none"); 
    } 
}); 

何かがあなたのために働くかもしれません。

+0

ありがとう、それは働いたようです!さらに、ページ上のすべての要素を一度にロードするのではなく、必要に応じて要素がロードされるようになりました。完璧!今これがブラウザ間で互換性があることを保証する*一息* –

関連する問題