Waypoint 3.0中的triggerOnce选项发生了什么变化?

时间:2014-12-23 23:25:15

标签: jquery-waypoints

我最近在我的项目中将jquery-waypoints从2.x升级到3.x,发现我的很多代码都破了。我的处理程序中对$(this)的所有引用都必须更改为$(this.element),一旦我发现是我的麻烦的原因,很容易解决。

我无法弄清楚triggerOnce选项发生了什么,这会阻止航点多次发射。知道为什么删除它,我怎么能实现相同的功能?

3 个答案:

答案 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();
});