2014-09-20 51 views
4

我想問一下關於滾動監聽器。我想添加滾動監聽器的身體,但它似乎無法正常工作。滾動監聽器在身上

$('body').scroll(function(){ 
    console.log('SCROLL BODY'); 
}); 

我創建fiddle基本的例子,有人可以解釋我爲什麼不工作? 對不起nubies問題...

回答

4

由於身體不滾動,window是。

This example中,您會看到綁定到父項container的事件偵聽器正在觸發,因爲該元素實際上正在滾動。

的HTML看起來像這樣:

<div id="container"> 
    <p id="content">some text</p> 
</div> 

的CSS是這樣的:

#container { 
    height: 200px; 
    overflow-y: scroll; 
} 

#content { 
    height: 1000px; 
} 

及相關JS是這樣的:

$('#container').on('scroll', function() { 
    console.log('#container'); 
}); 

$('#content').on('scroll', function() { 
    console.log('#content'); 
}); 
+0

所以你說有滾動身體我需要在CSS中設置高度顯式,否則身體是constatly擴大和滾動永遠不會在那裏? – user1297783 2014-09-20 17:03:24

+0

正確 - 正文不在您的案例中滾動,因此綁定到它的監聽器將無法工作。將聽衆綁定到窗口,你很好。 – Robert 2014-09-20 17:05:00

+0

我知道我可以綁定偵聽器到窗口,但我想添加滾動列表到html標籤,所以在我的情況下,Windows不是一個選項,至少如果我不會改變我的方法 – user1297783 2014-09-20 17:07:27

5

嘗試用:

$(window).scroll(function(){ 
    console.log('SCROLL BODY'); 
}); 

這應該被所有瀏覽器支持。

+0

我知道我可以在窗口中,但我想添加滾動監聽器到html標記。 – user1297783 2014-09-20 17:03:04

+0

和你期望什麼不同的效果? – 2014-09-20 17:05:59

+0

我想在html標籤級別添加滾動監聽器,而不是像窗口這樣的js對象,但我想我需要改變我的方法。 – user1297783 2014-09-20 17:10:19