这段代码有什么作用?
var oldScrollPos = $(window).scrollTop();
$(window).on('scroll.scrolldisabler', function (evt) {
$(window).scrollTop(oldScrollPos);
evt.preventDefault();
});
我的代码库使用上面的代码,但我不太清楚为什么它有用。
答案 0 :(得分:2)
简短回答:该代码阻止用户滚动窗口,但".scrolldisabler"
部分没有任何固有的含义,并且不需要使代码工作。是否防止滚动是有用的"取决于您的要求。
答案很长:
第一行将窗口的当前滚动位置存储在变量oldScrollPos
中。
对.on()
的调用会为窗口创建一个事件处理程序"滚动"事件。处理程序所做的是将窗口的滚动位置设置回存储在oldScrollPos
变量中的内容,这样就可以防止用户滚动窗口。 (它也会调用.preventDefault()
,但我不认为在这种情况下会做任何事情,因为滚动事件是在滚动发生后触发的。)
".scrolldisabler"
部分是&#34;事件名称空间&#34;,这是一个jQuery功能:它只是一个标识符,您可以用来取消绑定此处理程序而不影响其他滚动处理程序,它是< em> not 实际事件名称的一部分,没有特定的技术含义。这可以编码为.on("scroll.hello"
或.on("scroll"
,它仍然可以以相同的方式工作。如果您稍后致电.trigger()
或.off()
,则该命名空间才会发挥作用。
有关jQuery事件命名空间的更多信息,请查看.on() documentation。