2016-03-02 74 views
0

这段代码做了什么?scroll.scrolldisabler做什么?

var oldScrollPos = $(window).scrollTop(); 
    $(window).on('scroll.scrolldisabler', function (evt) { 
     $(window).scrollTop(oldScrollPos); 
     evt.preventDefault(); 
}); 

我的代码库使用了上面的代码,但我不太确定它为什么有用。

回答

2

简短回答:该代码会阻止用户滚动窗口,但".scrolldisabler"部分没有任何固有含义,并且不需要使代码生效。是否防止滚动是“有用”取决于您的要求。

龙答:

第一行存储在变量oldScrollPos窗口的当前滚动位置。

.on()的调用为窗口“滚动”事件创建一个事件处理程序。处理程序所做的是将窗口的滚动位置设置回存储在变量oldScrollPos中的内容,以防止用户滚动窗口。 (这也叫.preventDefault(),但我不认为做任何事情在这种情况下,因为滚动发生后触发滚动事件。)

".scrolldisabler"部分是一个“事件命名空间”,这是一个jQuery功能:它只是一个标识符,您可以使用该标识符来解除绑定此处理程序而不影响其他滚动处理程序,它是而不是实际事件名称的一部分,并且没有特定的技术含义。这可以编码为.on("scroll.hello".on("scroll",它仍然会以相同的方式工作。名称空间仅在您稍后致电.trigger().off()时发挥作用。

有关jQuery事件命名空间的更多信息,请参阅.on() documentation