読み込みページで、各 div の上部位置、下部位置、およびクラス名の両方を保存します。
positions = {}
for $div in $('div')
topPosition = $div.offset().top
bottomPosition = topPosition + $div.outerHeight()
positions[topPosition] = positions[bottomPosition] = $div.attr('class')
上と下の両方の位置を保存することで、下からaが入力されたときに通知することができdiv
ます。
位置オブジェクトは 1 回だけ計算され、次のようになります。
{
0: 'splash-screen',
400: 'splash-screen',
401: 'about-us',
801: 'about-us',
802: 'contact-us',
1202: 'contact-us'
}
次に、ウィンドウのスクロール イベントをリッスンして、次のように呼び出します。
$(window).scroll ->
return unless divClassName = positions[window.scrollY]
console.log "Entering #{divClassName}!"
JavaScript で編集:
var positions = {};
$('div').each(function(index) {
var topPosition, bottomPosition;
topPosition = $(this).offset().top;
bottomPosition = topPosition + $(this).outerHeight();
positions[topPosition] = positions[bottomPosition] = $(this).attr('class');
})
$(window).scroll(function(e){
if (positions[window.scrollY] == undefined) return;
console.log('Entering ' + positions[window.scrollY] + '!');
})