jQuery - 如果水平滚动的 div 位于滚动的最左边和最右边,则触发事件

标签 jquery scroll

我有一个水平滚动的 div:

<div id = "scrollable-div">
    <div class = "div-inside"></div>
    <div class = "div-inside"></div>
    <div class = "div-inside"></div>
    <div class = "div-inside"></div>
</div>

我想在用户滚动到div的最右侧时触发一个事件,然后在用户滚动回div的最左侧时触发另一个事件。我有以下代码,当我到达最右边时会触发一个事件:

jQuery(function ($) {
        $('#scrollable-div').on('scroll', function () {
            if ($(this).scrollLeft() + $(this).innerWidth() >= $(this)[0].scrollWidth) {
                $('#end-treatment').show();

            }
        })
    }); 

但是当我回到左边时,我似乎无法让它工作。基本上,我想在滚动到最右边时显示一个 div,在滚动回最左边时显示另一个 div。这可能吗?谢谢..

最佳答案

是的,如果我没理解错的话。请参阅下面的代码片段,但基本思想是 if($(this).scrollLeft() === 0) { ... }

我还插入了隐藏消息的逻辑(请参阅我的评论),以防万一您想要这样做,但如果这不是您想要的,您可以将其删除。

jQuery(function ($) {
  $('#div-1').on('scroll', function () {
    if($(this).scrollLeft() + $(this).innerWidth() >= $(this)[0].scrollWidth) {
      $('#end-treatment').show();
    } else if($(this).scrollLeft() === 0) {
      $('#other-message').show();
      
    // Remove this part if you don't want your messages hidden again
    } else {
      $('#end-treatment').hide();
      $('#other-message').hide();
    }
  })
});
.scrollable-div {
  max-width: 200px;
  overflow-x: auto;
  white-space: nowrap;
  background: lightgray;
}

.div-inside {
  display: inline-block;
  width: 100px;
  height: 30px;
  margin-top: 10px;
  margin-bottom: 10px;
  background: gray;
}

.message {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="div-1" class="scrollable-div">
  <div class="div-inside"></div>
  <div class="div-inside"></div>
  <div class="div-inside"></div>
  <div class="div-inside"></div>
</div>

<div id="end-treatment" class="message">
  "End Treatment"
</div>

<div id="other-message" class="message">
  "Other Message"
</div>

关于jQuery - 如果水平滚动的 div 位于滚动的最左边和最右边,则触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38791666/

相关文章:

javascript - JQuery .on ("mouseover") 方法不适用于 IE

jQuery UI 可排序表句柄

ios - addSubview 改变一个对象在 scroll.subviews 中的索引

jquery - 内容固定在底部

javascript - 移动设备上的 jQuery 实时滚动事件(解决方法)

javascript - 如何正确地将 div 添加到现有的 div?

javascript - 淡入 JQuery 不起作用?

php - 如何在可选列表中查看实时搜索结果?

android - 在水平 ScrollView 中单击时如何滚动到芯片?

javascript - jQuery 滚动事件 - 检测元素滚动到 View 中 - 在 Chrome 上性能不佳