Javascript TurboLink导致滚动事件未触发
在我的Rails 5应用程序中,我有一个应该在scroll事件中启动的脚本,但由于某些原因,我无法使它与turbolinks gem一起工作 我的代码: 第一次尝试:Javascript TurboLink导致滚动事件未触发,javascript,jquery,ruby-on-rails,ruby-on-rails-5,turbolinks,Javascript,Jquery,Ruby On Rails,Ruby On Rails 5,Turbolinks,在我的Rails 5应用程序中,我有一个应该在scroll事件中启动的脚本,但由于某些原因,我无法使它与turbolinks gem一起工作 我的代码: 第一次尝试: $("#side-block").on("scroll page:load", function(e) { console.log("scroll"); } 第二次尝试: $(document).on('turbolinks:load', function() { $("#side-block").on("scrol
$("#side-block").on("scroll page:load", function(e) {
console.log("scroll");
}
第二次尝试:
$(document).on('turbolinks:load', function() {
$("#side-block").on("scroll page:load", function(e) {
console.log("scroll");
});
});
两个人都不走运。脚本已正确加载,但未触发滚动。我缺少什么?尝试使用事件委派:
$(document).on("scroll", "#side-block", function(e) {
console.log("scroll");
}
问题与元素上的错误溢出属性有关。根据jQuery文档: 当用户滚动到元素中的其他位置时,将向元素发送滚动事件。它适用于窗口对象,但也适用于可滚动的框架和元素,当元素的显式高度或宽度小于其内容的高度或宽度时,溢出CSS属性设置为滚动或自动 这就是为什么滚动事件从未被触发 此外,我发现在使用turbolinks gem时包装JS非常有用,代码如下:
$(document).on('ready page:load', function() {
...
});
它允许我在页面呈现后操作页面元素 这并没有解决我的问题,但即使是有帮助的。给我指出了正确的方向。谢谢