Javascript 滚动事件上的jQuery未触发

Javascript 滚动事件上的jQuery未触发,javascript,jquery,events,scroll,Javascript,Jquery,Events,Scroll,我有一个有很多ajax操作的应用程序。所以我所有的事件都是这样处理的: jQuery( 'body' ).on( 'click', '#id', function ( event ) { // Do something }); 而不是: jQuery( '#id' ).click( function() { // Do something }); 这可以很好地处理所有事件,但滚动事件除外,类似这样的事件不起作用: jQuery( 'body' ).on( 'scroll

我有一个有很多ajax操作的应用程序。所以我所有的事件都是这样处理的:

jQuery( 'body' ).on( 'click', '#id', function ( event ) {

    // Do something

});
而不是:

jQuery( '#id' ).click( function() {

   // Do something

});
这可以很好地处理所有事件,但滚动事件除外,类似这样的事件不起作用:

jQuery( 'body' ).on( 'scroll', '#id', function ( event ) {

    // Do something

});

通过鼠标滚轮活动,效果非常好。是否有任何错误或是否没有滚动事件?

问题在于
滚动
事件不会在DOM中冒泡,因此使用
live()
on()
委托()
进行委托将不起作用

您必须自己将事件处理程序绑定到动态创建的元素


问题在于
滚动
事件不会在DOM中冒泡,因此使用
live()
on()
委托()
进行委托将不起作用

您必须自己将事件处理程序绑定到动态创建的元素

不确定这是否有帮助

$(window).on('scroll', function(){
   $("#head").html($(this).scrollTop());
});
不确定这是否有帮助

$(window).on('scroll', function(){
   $("#head").html($(this).scrollTop());
});

要能够触发DOM元素的滚动事件,您应该将其放入css中:

选择器{overflow-y:scroll}

要能够触发DOM元素的滚动事件,您应该将其放入css中:

选择器{overflow-y:scroll}

您至少应该意识到,将所有事件委托给主体不是很好的做法,如果可以使用其他选项或静态父元素,通常应该避免。您至少应该意识到,将所有事件委托给主体不是很好的做法,如果您有其他选项或静态父元素可以替代,通常应该避免使用。这似乎是一个不太好的解决方案。但这可能是唯一可行的。。。在每次ajax调用之后,也可能会同步事件处理程序,但我的代码是几千行的大代码…这似乎是一个不太好的解决方案。但这可能是唯一可行的。。。在每次ajax调用之后也可能同步事件处理程序,但是我的代码有几千行,非常感谢。您的解决方案是scroll事件的标准jquery方式,但您不能在运行时将其绑定到不在dom中的元素。因此,对于所有动态创建的东西来说,这个解决方案都是无用的,除非您将它放入ajax响应本身(这正是BenM所建议的)。您的解决方案是scroll事件的标准jquery方式,但您不能在运行时将其绑定到不在dom中的元素。因此,对于所有动态创建的东西,这个解决方案都是无用的,除非您将它放入ajax响应本身(这正是BenM建议的)。