0

我的页面有一个带有溢出的 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 值存储在一个临时变量中并比较新值;如果没有变化,那么它已经到了尽头,但我相信必须有一种更清洁的方式来实现这一点。

有什么想法吗?

4

1 回答 1

1

你可以使用类似的东西

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

如此处所示

我建议存储width在事件ready内部可访问的变量中scroll

a = $('#lorem p').width();
b = $('#lorem').width();

并在函数中使用它们

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

这样,您将在scroll. 因为这是一个非常昂贵的事件,只有在没有其他解决方案的情况下才应该使用。

理想情况下,您应该像这样使用节流函数调用。这将延迟函数调用并节省大量资源。

于 2013-03-13T10:34:36.417 回答