jQuery Waypoints 只触发一次

10

我正在使用http://imakewebthings.com/jquery-waypoints,当用户滚动到带有类div1的区域时,需要执行某些操作。 但是,我只需要它触发一次,而不是每次用户滚动到该位置时都触发。 — 仅一次

$('.div1').waypoint(function(direction) 
{
    alert(CARRY OUT MY ACTION);
});

这应该仅在第一次滚动到该部分时发生——向上或向下。

4个回答

33

triggerOnce()已被替换为destroy(),只需添加this.destroy()即可。

$('.div1').waypoint(function(direction){
    alert('CARRY OUT MY ACTION')
    this.destroy()
});

如需更多选项,请查看Waypoints API


14
如果您向 waypoint()函数传递第二个参数,您可以包含一个配置选项对象。将triggerOnce选项设置为true将使插件按照您的意愿工作。
$('.div1').waypoint(function(direction) 
{
    alert('CARRY OUT MY ACTION');
},  
{ 
    triggerOnce: true 
});

1
请注意,Waypoints API在3.0版本中已更改。http://imakewebthings.com/waypoints/api/destroy/ - aaandre
在处理程序中有没有一种方法可以销毁特定元素中的所有航点? - Brendon Muir

1
在新的API中,似乎不再有triggerOnce选项,但仍然可以在第一次调用后使用waypoint.disable()方法。

1
答案是在处理程序函数的末尾使用this.destroy()。以下是一个可行的示例:
$('.div1').waypoint(function(direction){

    handler: function(direction) {

        alert('CARRY OUT MY ACTION');

        this.destroy();

    }

});

此外,还可以查看waypoint.destroy()文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接