jQueryを使用して独自の単純なプラグインを作成することもできます。その後、
$.belowViewport = function(elem){
var port = $(window).scrollTop() + $(window).height();
return port <= $(elem).offset().top;
}
$.fn.onBecomeVisible = function(fn){
var obj = this;
$(window).scroll(function() {
obj.each(function() {
if(!$.belowViewport(this) && !$(this).data('scrollEventFired')){
$(this).data('scrollEventFired', true);
fn(this);
}
});
});
return this;
}
、スクリプトがマッチしellementsのそれぞれにFNを結合するこの
$('.elements:last').onBecomeVisible(function(elem){ loadNewElems(); });
のようにそれを使用しています。一致した要素のいずれかがスクロールして表示されると、この関数が起動します。この関数は、どの要素がイベントを発生させたかを渡します。
ライブを使用してこのイベントをバインドすることはできませんので、新しい要素を追加した後にリバインドする必要があります(最後のイベントにイベントを追加することを前提としています)。
EDIT
私は、ここに間違っていた:目に見える要素がビューポート内で天気をかを返しません。しかし、ソースを編集して、要素がビューポート内にあるかどうかをチェックします。この関数は、要素がビューポートの下にあるかどうかをチェックします。ビューポートの下にない場合、ビューにスクロールされ、関数を実行する必要があると想定します。 Googleのクロム1.0でこれをテストし
EDIT2
、Firefoxの3.0.10およびIE7
+1、これはうまくいくと素晴らしいです。 (スクロールのスペルを修正しました) - それを試してみてください。 – cgp