我使用此代码在滚动时获取页面中元素的偏移量,但滚动函数仅执行一次并提醒 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"});
}
}
}
最佳答案
问题是 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/