2017-01-22 12 views
0

jQueryを使用して要素が画面に表示されているかどうかを確認しています。同じけれども異なる瞬間に複数の要素を持つ必要があるので、クラスの要素を選択しています。 1つの要素が画面に表示されたら、それを変更します(fadeIn +アニメーション化されたスライド)。jQueryクラスからの単一要素の変更

$(window).scroll(function(){ 
    $(".material-slide-up").each(function(){ 
    if(isScrolledIntoView($(this))) { 
     $(this).fadeIn(1000); 
     $(this).addClass("slideInUp animated"); 
    } 
    }); 
}); 

現在のコードを実行すると、同じクラスのすべての要素が変更されます。私は "each"を使っているからだと思う。

画面上の同じクラスから1つの要素のみを変更する方法はありますか?

+0

「else()」の部分を追加してください: '$(this).removeClass(" slideInUp animated ");'あなたのコードには私が見る限りエラーはありません。外部関数 'isScrolledIntoView($(this))'が表示されている要素のみを返し、それ以外の場合はクラスが削除されると、第3の目に見える要素は '$( '。slideInUp animated').eq(2)'で、他のものはそれだけで行います。 – ddlab

答えて

0

このような小さなヘルパー関数が大きい

$.fn.inView = function(){ 
if(!this.length) return false; 
var rect = this.get(0).getBoundingClientRect(); 

return (
    rect.top >= 0 && 
    rect.left >= 0 && 
    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && 
    rect.right <= (window.innerWidth || document.documentElement.clientWidth) 
); 

}; 

さて、あなたはDOMを共有していなかったので、私たちは私を使用しますが、ここではペンへのリンクが効果を表示するには、スクロールダウン、です。

呼び出し関数は、あなたの完全なコードを表示する場合、私はあなたのためにそれを適応させることができますが、これは今把握が容易であるべきで、この

$(window).on('scroll',function(){ 
var imgs = $('img'); 
imgs.each(function(){ 
    var $this = $(this); 
    $this.inView() && $this.addClass('magictime vanishIn'); 
}) ; 
}); 

http://codepen.io/damianocel/pen/zBLEXR

のようになります。

+0

codepenの画像が表示されません – ddlab

+0

もう一度やり直してください。ちょうどコード上でbit.clickをクリックしてからスクロールダウンするか、スクロールダウン – ptts

+0

Yupp :-)これで機能します。 – ddlab

関連する問題