Jquery .on()滚动在动态div上不起作用

时间:2016-05-15 17:44:24

标签: jquery scroll

我已经尝试过在SO和网络的其他部分找到的所有其他“解决方案”,但仍无法使其发挥作用。

我有一个动态创建的div position: fixed; overflow-y: auto,div是在用户点击某个链接时创建的。这是我用来尝试执行某些代码的函数,只要滚动动态创建的div。

        $("#scroller").on("scroll",function() {
           console.log("scrolled..");
        });

#scroller是动态创建的div

的ID

问题是,当加载页面时,此功能不起作用,但当该功能粘贴到Google Chrome中的开发者控制台时,可以正常工作。< / p>

我尝试过使用常规scroll()函数到将on()函数更改为以下内容的所有内容:

    $("#scroller-container").on("scroll","#scroller",function() {
       console.log("scrolled..");
    });

然而它仍然不起作用。

我怎样才能让它发挥作用?

编辑:所有代码都在jQuery(window).load(function ()...函数

1 个答案:

答案 0 :(得分:2)

在DOM上附加元素后尝试绑定scroll事件,如下所示:

$("body").on("DIVscroll", "#scroller", function(){
  console.log("Scrolled...");
});

$("#btn").on("click", function(){
  $("body").append('<div id="scroller">I have a dynamically created div with position: fixed; overflow-y: auto, the div is created when a user clicks a certain link. This is the function Im using to try and execute some code whenever that dynamically created div is scrolled.</div>');
  ScrollEventListener($("#scroller"));
});

function ScrollEventListener(el){
  el.on("scroll", function(){
    el.trigger("DIVscroll");
  });
}
body{
  font-size: 17px;
}
	
#scroller{
  height: 100px;
  width: 300px;
  border: 1px solid;
  overflow-y: auto;
  position: fixed;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="btn" value="Append div"/>