我的页面有一个带有溢出的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值存储在临时变量中并比较新值;如果没有变化,那么它已经到了终点,但我确信必须有更清洁的方法来实现这一目标。
有什么想法吗?
答案 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等限制函数调用。这将延迟函数调用并节省大量资源。