Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 观察div中的滚动不适用于未来事件_Jquery - Fatal编程技术网

Jquery 观察div中的滚动不适用于未来事件

Jquery 观察div中的滚动不适用于未来事件,jquery,Jquery,不,这不是复制品。对于每一种事件,这都是有效的-除了滚动 我们正在弹出聊天窗口,我们需要观察这些窗口的滚动事件 这很有效 $(".chat-window").scroll(function() { var scroll = $(this).scrollTop(); console.log(scroll); }) 如果在聊天窗口弹出后,我把它扔进我的控制台,它就会工作 但我们需要它作为未来的元素。这个解决方案不起作用 这不起作用 $(document).on("scroll",

不,这不是复制品。对于每一种事件,这都是有效的-除了滚动

我们正在弹出聊天窗口,我们需要观察这些窗口的滚动事件

这很有效

$(".chat-window").scroll(function() {
    var scroll = $(this).scrollTop();
    console.log(scroll);
})
如果在聊天窗口弹出后,我把它扔进我的控制台,它就会工作

但我们需要它作为未来的元素。这个解决方案不起作用

这不起作用

$(document).on("scroll", ".chat-window", function(event) {
    var scroll = $(this).scrollTop();
    console.log(scroll);
});
我说的“不工作”是指功能没有被触发


是我还是jquery中常见的bug?我无法观察furute clickevents。

滚动事件不会在DOM中冒泡。 见:

以及:

在所有浏览器中,加载、滚动和错误事件(例如,在 元素)不要冒泡。在Internet Explorer 8及更低版本中,粘贴 重置事件不会出现气泡。不支持使用此类事件 使用委托,但在事件处理程序 直接附加到生成事件的元素

还有:


滚动事件不会使DOM冒泡,因此live()和on()以及delegate()将无法工作。您必须自己将事件处理程序绑定到动态创建的元素

:

在所有浏览器中,加载、滚动和错误事件(例如,在 元素)不冒泡..这些事件不支持与一起使用 委托,但当事件处理程序直接 附加到生成事件的元素

但是,您可以在父级或文档上使用Javascript
addEventListener
捕获事件,然后使用动态元素的
event.target
进行委托

wrap.addEventListener('scroll', function (e) {
    if (e.target.className === 'chat-window') { 
        console.log('scrolling', e.target);
    }
}, true);
示例

var chat=$(“#tmpl”).html(),
$chat=$(chat),
wrap=document.getElementById('wrap');
$(“#wrap”).append($chat);
wrap.addEventListener('scroll',函数(e){
如果(e.target.className==='chat window'){
console.log(“滚动”);
}
},对);
console.log=函数(txt){
$(“#结果”).html($(“#结果”).html()+”
“+txt); }
。聊天窗口{
高度:120px;宽度:320px;
边框:1px纯色灰色;
溢出:自动;
}

在下面键入任何内容并使其滚动


谢谢你,伙计。防止我在测试上浪费更多时间:Dbody=$(“”,{class:“tab body chat window”})$滚动(function(){console.log(“yolo”)})工作正常。thanksinteresting:我需要在$(window)内调用。load(function()。如果我在稍早调用的$(function(){)中调用它,它将不起作用。weired.但是工作:)@huanson:这很奇怪。可能与我调用聊天室(完全动态调用)的方式有关。不管怎样,它现在起作用了。谢谢