jquery - 为什么 (jQuery) Waypoints "bottom-in-view"不适用于隐藏元素?

标签 jquery hidden jquery-waypoints

我试图使用 jQuery 和 Waypoints(以前称为 jQuery Waypoints)在用户向下滚动时动态显示隐藏的图像。

我发现我可以很容易地向元素添加一个路径点,并在元素“在 View 中”时触发处理程序(在 View 底部设置 offset 属性)。

但是,尝试使用相同的属性对隐藏元素不起作用:加载页面后立即触发处理程序。

例如:当已经显示的元素进入视口(viewport)时隐藏它们很容易。 (Example 1: jsFiddle):

var waypoints = $('.dynamic').waypoint({
    handler: function (direction) {
        $(this).hide(700);
    },
    offset: 'bottom-in-view'
});

但是,我想做的是相反的:当我们滚动到隐藏元素的位置时显示它。下一个示例不起作用,因为处理程序是在 window.load() 事件之后立即触发的,而不是等待用户向下滚动。 (Example 2: jsFiddle):

var waypoints = $('.dynamic').waypoint({ // these elements are display: none
    handler: function (direction) {
        $(this).show(700);
    },
    offset: 'bottom-in-view'
});

我找到了解决方法。我使用一个空的(但不是隐藏的)div 来附加航路点。然后,当我向下滚动到上述 div 时,该路点就会被执行。在 div 的处理程序中,我使用 jQuery 来显示其他元素。 (Example 3: jsFiddle):

var waypoints = $('#emptyDiv').waypoint({
    handler: function (direction) {
        $('.dynamic').show(700);
    },
    offset: 'bottom-in-view'
});

但是,我仍然很困惑为什么当附加到隐藏元素时,路径点会在 window.load() 之后立即触发。尽管未显示,但附加路径点的元素位于页面下方。

最佳答案

这不仅仅是“bottom-in-view”。当元素隐藏且不显示时,每个偏移都会失败。 the Waypoints debugging guide section on display none elements对此进行了详细介绍。 .

Waypoints 的工作原理是询问元素在页面上的位置,以便它可以计算需要在滚动中的哪个位置触发处理程序。但不显示页面上存在的任何元素。当被问及时,这些元素报告自己为 0,0。

关于jquery - 为什么 (jQuery) Waypoints "bottom-in-view"不适用于隐藏元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30961414/

相关文章:

jquery - 将值插入隐藏和数据库问题?

javascript - jQuery 航点未在正确位置触发

jQuery 遍历 p

javascript - 如何检测元素的点击

javascript - jquery动态添加/行到表中

html - 悬停CSS以显示隐藏文本

javascript - jquery 定位与 position()

javascript - 简单的 Javascript 在 FireFox 中不起作用(但在所有其他浏览器中都起作用)

javascript - 重新初始化航路点

javascript - 如何触发仅在航路点可见的类