Javascript 滚动体上的侦听器
我想问一下滚动监听器。我想在主体上添加滚动侦听器,但它似乎不起作用Javascript 滚动体上的侦听器,javascript,jquery,scroll,listener,document-body,Javascript,Jquery,Scroll,Listener,Document Body,我想问一下滚动监听器。我想在主体上添加滚动侦听器,但它似乎不起作用 $('body').scroll(function(){ console.log('SCROLL BODY'); }); 我创建了一个基本的例子,有人能解释一下为什么它不起作用吗? 很抱歉Nubie的问题…因为主体没有滚动,所以窗口没有滚动 在中,您将看到绑定到父容器的事件侦听器是触发的,因为该元素实际上是滚动的元素 HTML如下所示: <div id="container"> <p id="co
$('body').scroll(function(){
console.log('SCROLL BODY');
});
我创建了一个基本的例子,有人能解释一下为什么它不起作用吗?
很抱歉Nubie的问题…因为主体没有滚动,所以
窗口没有滚动
在中,您将看到绑定到父容器的事件侦听器是触发的,因为该元素实际上是滚动的元素
HTML如下所示:
<div id="container">
<p id="content">some text</p>
</div>
#container {
height: 200px;
overflow-y: scroll;
}
#content {
height: 1000px;
}
$('#container').on('scroll', function() {
console.log('#container');
});
$('#content').on('scroll', function() {
console.log('#content');
});
相关的JS如下所示:
<div id="container">
<p id="content">some text</p>
</div>
#container {
height: 200px;
overflow-y: scroll;
}
#content {
height: 1000px;
}
$('#container').on('scroll', function() {
console.log('#container');
});
$('#content').on('scroll', function() {
console.log('#content');
});
尝试:
$(window).scroll(function(){
console.log('SCROLL BODY');
});
这应该得到所有浏览器的支持。以上所有答案都希望jQuery成为使用框架。框架无关/普通JS实现可能如下所示
ES 5:
//ES 5:
document.getElementsByTagName('body')[0]。onscroll=function(){
console.log(“滚动”);
};代码>纯JS解决方案
一切都很简单:只需使用addEventListener
滚动事件
document.body.addEventListener('scroll',函数(事件){
log(“;{};”);
} );
并使用CSS使body
可滚动:
:根目录{
溢出:隐藏;
}
身体{
溢出y:滚动;
最大高度:100vh;
}
我不知道为什么简单的处理程序分配不起作用。如果你知道原因,请告诉我
document.body.onscroll = function( event ) {
console.log('You will never see this message.');
};
您也可以这样做:
document.body.onwheel = function( e ) {
...
};
只有在您使用滚轮时才会触发此事件(对我来说,这实际上并不明显),因此,如果您使用滚动条滚动页面,则不会触发此事件。我知道我可以在窗口上进行此操作,但我想将滚动侦听器添加到html标记。您希望有什么不同的效果?我正在尝试在html标记级别添加滚动侦听器,不是像窗口一样的js对象,但我认为我需要改变我的方法。所以你说要在主体上滚动,我需要在css中设置高度明确性,否则主体会不断扩展,滚动永远不存在?正确-主体在你的情况下不会滚动,因此绑定到它的侦听器将无法工作。把一个监听器绑定到窗口,你就没事了。我知道我可以把监听器绑定到窗口,但我想把scroll listner添加到html标记中,所以在我的情况下,windows不是一个选项,至少如果我不改变我的方法,在body上滚动是一件不寻常的事情。如果可能的话,我会改变你的方法,以减少将来的麻烦。否则,您需要将CSS添加到正文中,以获得所需的效果。或者您可以只参考document.body-