确定用户何时滚动到DIV的结尾

时间:2013-03-13 08:38:52

标签: javascript jquery

我的页面有一个带有溢出的DIV,我在div的两侧放置了两个按钮作为辅助滚动方法。

按下左键时,会运行以下脚本,似乎完美无缺:

        function slideLeft() {
        if ($("#divfieldWidgets").scrollLeft() == 0) {
            $('#divScrollWidgetsLeft').animate({ opacity: 0.1 }, 250);
            window.clearInterval(animationHandler);
        }
        $('#divfieldWidgets').animate({ scrollLeft: "-=100px" }, 250);
    }

然而,我似乎无法找到一种方法来确定当向右滚动时DIV何时达到它的极限。

我很确定我需要一些基于$(“#divfieldWidgets”)。scrollLeft()和$(“#divfieldWidgets”)。width()的计算,但是我对这两个值进行了所有算术运算不要产生任何与宽度,最大值等有关的结果,等等。

我想到了最后一个选项,那就是将当前的scrollLeft值存储在临时变量中并比较新值;如果没有变化,那么它已经到了终点,但我确信必须有更清洁的方法来实现这一目标。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的内容
$(function() {
    $('#lorem').scroll( function() {
        if ( $('#lorem').scrollLeft() == ($('#lorem p').width() - $('#lorem').width())) {
            alert('end!');
        }
    });
});

如图所示here

我建议将width存储在ready可以在scroll事件

中访问的变量中
a = $('#lorem p').width();
b = $('#lorem').width();

并在功能中使用它们

if ( $('#lorem').scrollLeft() == (a - b)) {
    // rest of the code
}

这样,您将在scroll上保存几个函数调用。因为这是一个非常昂贵的事件,只有在没有其他解决方案时才应该使用。

理想情况下,您应该使用this等限制函数调用。这将延迟函数调用并节省大量资源。