の複数のインスタンスに適用され、私は要素がビューポートであるかどうかを検出する機能を使用しようとしてきた:JavascriptをgetBoundingClientRect() - クラス
function isElementInViewport (el) {
var rect = el[0].getBoundingClientRect();
return (rect.top>-1 && rect.bottom <= $(window).height());
}
var s= $('.special'),
y = $('.status');
$(window).on('scroll resize', function(){
if(isElementInViewport(s))
{
setTimeout(function(){
if(isElementInViewport(s))
{
var offer_id = s.data("offer-id");
alert(offer_id);
y.text('Yes');
}
}, 3000);
}
else
{
y.text('No');
}
});
は、残念ながら、これは最初のインスタンスのみのために働くようですクラス「特別」のどのようにしてそのクラスのすべてのインスタンスに適用するのですか?
速いスクロールでトリガーするのを防ぐため、3秒の遅延を追加しました。ここで
は、私の進捗状況のjsfiddleです:jqueryのeach
を使用してhttp://jsfiddle.net/azjbrork/6/
コレクションのすべての要素をループしたい場合にのみ、なぜ 'el [0]'で呼び出すのですか? – Bergi
@Bergi機能は私のものではありません。私はjavascriptの練習で学ぶことを試みている相対初心者です... –
'el'はjqueryオブジェクトです - この場合' $( '。special') 'と' getBoundingClientRect( ' ); 'は、jQueryオブジェクトの最初のコンポーネントでのみ呼び出すことができる純粋なjs関数です。したがって '$( '。special')'は '$( '。special')[0] .....'になります。この場合は 'el [0]'です。 – Sam0