jquery航路点:如何在同一对象上绑定多个航路点

jquery航路点:如何在同一对象上绑定多个航路点,jquery,events,viewport,jquery-waypoints,Jquery,Events,Viewport,Jquery Waypoints,当对象以滚动方式出现在视口中时,jquery waypoints将触发回调。这对于基本的实现非常有效 现在,我尝试为同一个“article”标签提供两个航路点,当 谢谢。更新:以下所有内容对于jQuery Waypoints 1.x都是正确的。自原始答案发布以来,Waypoints 2.0已经发布,包括对同一元素上多个Waypoints的支持。OP只需调用航路点两次的方法就可以了。(尽管回调签名仅更改为一个参数,direction) 这在jQuery航路点上目前是不可能的。每个元素只能有一个偏

当对象以滚动方式出现在视口中时,jquery waypoints将触发回调。这对于基本的实现非常有效

现在,我尝试为同一个“article”标签提供两个航路点,当


谢谢。

更新:以下所有内容对于jQuery Waypoints 1.x都是正确的。自原始答案发布以来,Waypoints 2.0已经发布,包括对同一元素上多个Waypoints的支持。OP只需调用
航路点
两次的方法就可以了。(尽管回调签名仅更改为一个参数,
direction


这在jQuery航路点上目前是不可能的。每个元素只能有一个偏移,因此第二个偏移将覆盖第一个偏移。它有点被埋了,但是有。我在那里的答复提供了两种解决这一限制的方法:

  • 使用第二个元素,可以是包装器,也可以是页面上具有与文章元素相同偏移量的任何其他元素
  • 在GitHub问题中,使用不同的插件
这是你目前最好的选择。我已经为此创建了一个插件,因为它会很有用,但需要对插件进行一些认真的修改


更新:上述答案仍然正确。在您的特定情况下,您在使用子元素时尝试执行的操作将很好,但您应该在子航路点内添加一个
事件.stopPropagation()
调用,以便事件不会冒泡并触发文章航路点,从而有效地消除隐藏调用。

实际上,在最初的问题中,您使用了两个不同的元素,article和article.find('.page')。那是错别字吗?哦,是的,那是错别字。这是第二次尝试,给
的孩子们同样的最高位置。但是没有运气。我测试了inview,不幸的是,我认为这不是我想要的。当元素进入/离开视口顶部时,它应将其激发。我真的需要给出一个偏移值的可能性。你有什么进一步的想法吗?我已经编辑了上面的答案。您尝试执行的操作将起作用,但您需要在第二个航路点内调用event.stopPropagation(),否则事件将冒泡并触发第一个航路点。
// waypoint 1
$.aquaverde.article.waypoint(function(event, direction) {
        currentIndex = $(this).index();
        if (direction === "down") {
            $.aquaverde.wrapper.find('.fixed:eq('+ currentIndex +')').show().siblings(".fixed").hide();
        }
});

// waypoint 2
$.aquaverde.article.find('.page').waypoint(function(event, direction) {
        if (direction === "down") {
            $.aquaverde.wrapper.find(".fixed").hide();
        }
    },{
    offset: 121
});
// waypoint 1
$.aquaverde.article.waypoint(function(event, direction) {
        currentIndex = $(this).index();
        if (direction === "down") {
            $.aquaverde.wrapper.find('.fixed:eq('+ currentIndex +')').show().siblings(".fixed").hide();

            // waypoint 2
            $(this).waypoint(function(event, direction) {
                $.aquaverde.wrapper.find(".fixed").hide();
            },{
                offset: 121             
            });
        }
});