我最近在我的项目中将jquery-waypoints从2.x升级到3.x,发现我的很多代码都破了。我的处理程序中对$(this)
的所有引用都必须更改为$(this.element)
,一旦我发现是我的麻烦的原因,很容易解决。
我无法弄清楚triggerOnce
选项发生了什么,这会阻止航点多次发射。知道为什么删除它,我怎么能实现相同的功能?
答案 0 :(得分:6)
我知道答案已被标记为正确,但我想扩展一个简单的评论。
3.0,作为主要版本,做出了重大改变。其中一个是删除triggerOnce
。在changelog中注明。 destroy docs中还提到了在处理程序末尾使用destroy
作为旧triggerOnce
的替代方法。
以前,triggerOnce
与调用destroy
完全相同,因为所有Waypoint方法都是在jQuery对象上调用的。这些jQuery对象中的元素可能有多个路径附加到它们,但是一旦创建它们就无法将它们分开。如果您致电destroy
,该元素上的所有航路点都将被销毁。但是,triggerOnce
选项在幕后以单独的航路点为基础。现在3.0直接返回Waypoint类的实例,并且处理程序中的this
是对Waypoint实例而不是元素的引用,triggerOnce
和调用this.destroy()
之间没有区别处理程序。所以代码被删除了。
答案 1 :(得分:2)
我找到了解决方案。将this.disable()添加到我的处理程序的末尾会在它被触发后禁用该路由点,从而阻止它再次被调用。我真的认为这应该记录在案。
答案 2 :(得分:0)
如果您需要禁用jQuery航点(v3.0):
$('.my-waypoint').waypoint(function(direction){
// Do some stuff
this.destroy();
});