javascript - 如何使用 jQuery 手动滚动 div?

标签 javascript jquery mouseevent

假设您有一个包含大量内容的工具提示,因此需要使其可滚动。当然,您无法将鼠标移至滚动工具提示,因为当您离开光标时工具提示将被隐藏。

<!-- Let's assume this is my tooltip and -->
<div id="scrollableTooltip">
   <p>foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar... ∞ </p>
</div>

<div id="triggerDiv">
    <!-- When I hover and scroll here, I want to scroll my tooltip -->
    <p>Scroll inside me to trigger scroll in div above...</p>
</div>

我尝试了以下方法来定位 mousewheel DOMMouseScroll 事件,然后使用 jQuery 尝试在我的工具提示 div 中触发滚动 - 但没有成功( Please see my JSFiddle ):

$('#triggerDiv')
    .on('mousewheel DOMMouseScroll', function (e){

        console.log("Scroll was triggered...", e);

        // 1. 
        $('#scrollableTooltip').scroll();

        // 2. 
        // $('#scrollableTooltip').trigger('scroll');
  });

CSS

#scrollableTooltip {
  border: 1px solid red;
  height: 100px;
  overflow-y: scroll;
  margin-bottom: 30px;
}

#triggerDiv {
  border: 1px solid red;
  height: 200px;
}

最佳答案

您需要获取可滚动工具提示的当前滚动位置,然后通过滚动增量对其进行调整。

编辑:添加了“preventDefault”以防止目标滚动。

$('#triggerDiv').on('mousewheel DOMMouseScroll', function (e){
    // console.log("Scroll was triggered...", e);

    // 1. 
    $('#scrollableTooltip').scrollTop(e.originalEvent.deltaY + $('#scrollableTooltip').scrollTop());

    // 2. 
    // $('#scrollableTooltip').trigger('scroll', e);

    e.preventDefault();
});
#scrollableTooltip {
  border: 1px solid red;
  height: 100px;
  overflow-y: scroll;
  margin-bottom: 30px;
}

#triggerDiv {
  border: 1px solid red;
  height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Let's assume this is my tooltip and -->
<div id="scrollableTooltip">
   <p>foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar foo bar foo bar foo bar 
      foo bar foo bar foo bar... ∞ </p>
</div>

<div id="triggerDiv">
    <!-- When I hover and scroll here, I want to scroll my tooltip -->
    <p>Scroll inside me to trigger scroll in div above...</p>
</div>

关于javascript - 如何使用 jQuery 手动滚动 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43639576/

相关文章:

JavaScript window.location.replace(url) 多次重新加载

javascript - 检测静止光标是否悬停在以前隐藏、现在可见的元素上

javascript - 服务是提供者的一个子集,还是不是?

javascript - 将 javascript 正则表达式转换为 posix 正则表达式

javascript - 鼠标仅悬停在文本上而不是整行

javascript - 滚动时更改 CSS(在控制台和 JSFiddle 中工作,但不在我的 HTML 中工作?)

javascript - jquery 动画的替代品?

javascript - 如何清除存储在变量中的间隔?

c++ - qt c++ 多个鼠标事件不同的顺序

c# - "Ghost"WinForms 中的 MouseMove 事件