javascript - onscroll 事件仅执行一次

标签 javascript jquery offset onscroll

我使用此代码在滚动时获取页面中元素的偏移量,但滚动函数仅执行一次并提醒 viewportWidth,然后它停止在“off”变量处

这是原始脚本中的一个简单示例,它不仅仅是将 #menuIcon 设置为始终固定

$(document).ready(function(){
document.body.style.overflow = "hidden";
var viewportWidth = $(window).innerWidth();
document.body.style.overflow = "";
window.onscroll = scrolls(viewportWidth);
});

function scrolls(viewportWidth){
alert(viewportWidth);
if(viewportWidth>100 && viewportWidth<=820){
    alert('test');
    var w = $(window);
    var offset = $("#menuIcon").offset();
    var off = offset.top-w.scrollTop();
    if(off<='10'){
        $("#menuIcon").css({"position":"fixed","top":"20px"});
    }
}
}

jsfiddle

最佳答案

问题是 onscroll 被分配了运行 scrolls(viewportWidth) 的结果,但你真正想要的是给 onscroll 一个函数运行。如果您想传递 viewportWidth,您可以这样做:

window.onscroll = function() {
  scrolls(viewportWidth);
};

您更新的 JSFiddle:https://jsfiddle.net/n8vms2js/6/

关于javascript - onscroll 事件仅执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30791114/

相关文章:

JavaScript 文档.referrer

javascript - 如何在 react 中过滤和显示数组

javascript - 从 HTML 属性数组 javascript 获取键值

javascript - $ ("#id").ajaxStart(...) 在 ajax 请求期间被调用两次

jquery - Ajax加载页面无需刷新

java - 获取字符串的偏移量

javascript - Twilio 可编程视频 JS/Ionic

javascript - 从下拉菜单选项中显示 "title"标签

animation - 如何为 Tween<Offset> 转换 RenderBox 全局位置坐标?

c++ - 从 ".exe"+ 偏移量读取内存?