2016-07-22 7 views
2

画像があり、ページに表示されているときにその画像にボックスの影を付けるには、画像を追加する必要があります。以下のコードは、他の要素が表示されているときに機能しますが、必要なdivにクラスを追加しません。おそらく、最も正確な選択は適切ではありません。ボックスシャドウを表示するときにアニメーションを表示する

アイデア?

間違い
<div class="test-thewinner"> 
<img class="img-winner" src="xxx.png" alt="test-desktop"> 
<div class="test-shadow"></div> 
</div> 



       /* highlight border of winner */ 
    $('.img-winner').each(function(i){ 

     var bottom_of_object = $(this).offset().top + $(this).outerHeight(); 
     var bottom_of_window = $(window).scrollTop() + $(window).height(); 

     /* If the object is completely visible in the window, animate border or box shadow */ 
     if(bottom_of_window > bottom_of_object){ 

     $(this).closest('.test-shadow').addClass('greenit'); 

     } 

    }); 
+0

トライ.siblings( 'テスト-影。 ') –

答えて

0

はい最も近い要素をテストすることによってセレクタに一致する最初の要素を取得し、セット内の各要素について

.closest(セレクタ)

ドキュメントごとに、正しい選択ではありませんDOMツリー内でその先祖まで移動してを上回ります。

使用できます。

$(this).siblings('.test-shadow:first').addClass('greenit'); 
+0

完璧に作業しました! –

1

.closestそれが問題になっている要素の親を検索しますので、正しい選択ではありません。間に兄弟がある場合は、$(this).next().addClass('greenit');または$(this).next('.test-shadow').addClass('greenit');に変更してください。

+0

'.next(' テスト-影。')' – Aziz

+1

@Azizの間に兄弟がある場合 - 右、答えを更新しました。 –

関連する問題