javascript - 如何检测div中水平滚动的结束?

标签 javascript jquery html css

我试图在 div 中实现水平滚动。我的问题是如何检测水平滚动的结束?

我试过这样的东西

$(function() {
var scrollLeftPrev=0;
$('#scrollquestion').scroll( function() {
  var newScrollLeft=$('#scrollquestion').scrollLeft();
  if(scrollLeftPrev===newScrollLeft){
    alert('right end');
  }
  if(newScrollLeft===0){
    alert('left end');
  }
  console.log($('#scrollquestion').width());
  console.log(newScrollLeft);
  scrollLeftPrev=newScrollLeft;
 });
});

left end alert 有效,因为对于所有设备尺寸它将变为 0。对于右端,它取决于设备尺寸。

屏幕: Horizontal scroll

JS fiddle :http://jsfiddle.net/arunslb123/trxe4n3u/

最佳答案

使用 scrollWidthwidth 以及您的 leftscrollwidth 来获得差异。在你的情况下,有 8 的偏移量,所以它会给出 8 的差异,这可能是因为你的填充或边距。

var $elem=$('#scrollquestion');
var newScrollLeft = $elem.scrollLeft(),
    width=$elem.width(),
    scrollWidth=$elem.get(0).scrollWidth;
var offset=8;
if (scrollWidth- newScrollLeft-width==offset) {
    alert('right end');
}

Live Demo

使用 outerWidth()获得包括宽度在内的偏移量,

var $elem=$('#scrollquestion');
var newScrollLeft = $elem.scrollLeft(),
    width=$elem.outerWidth(),
    scrollWidth=$elem.get(0).scrollWidth;
if (scrollWidth-newScrollLeft==width) {
    alert('right end');
}

Another Demo without using offset

关于javascript - 如何检测div中水平滚动的结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32068664/

相关文章:

html - 背景透明度 crossbrowser 特别是 ie

javascript - jQuery 用格式写入每个字符

javascript - IE 对我的选择语句做了什么?

javascript - 如何等待在 backbone.js 中呈现 View 直到获取完成?

javascript - 如何制作一个也可以用作文本框的 "hybrid"HTML 下拉列表?

javascript - FullCalendarJS : changing select event color

javascript - (JS) 如何从数组中获取随机值(不是长度,因为键......!)

javascript - jquery循环不会暂停

javascript - 从 javascript 事件处理程序调用 ColdFusion 代码(服务器端代码)时出现“意外”行为

javascript - 如何使用 javascript 对重复对象的 ID 进行分组并删除数组中的对象