【问题标题】:onMouseOut firing without mouse leaving divonMouseOut 在没有鼠标离开 div 的情况下触发
【发布时间】:2014-01-24 16:34:52
【问题描述】:

我知道这里有一些类似的主题,但我找不到任何可以解决我的问题的东西。我是 JS 的新手,所以我试图让这个尽可能简单。

我有一个固定位置的 div,我想将其滚动位置返回到 0(顶部)onMouseOut。这是我的函数调用:

<div id="searchButton" onmouseout="scrollBack()">

这是相关的 JS:

function scrollBack() {
    $("#searchButton").scrollTop(0);
}

正如我在其他几个线程中看到的那样,问题是 onMouseOut 函数 (scrollback()) 在我真正离开 div 之前触发。

谁能指出我正确的方向?我想这可能与事件冒泡有关(滚动 div 中的其他元素,其中有很多),但这有点超出我的理解范围。

提前谢谢你!

编辑:结果 onMouseLeave 工作得很好。谢谢!

【问题讨论】:

  • 在函数上下断点,看看是谁触发了事件。
  • 你试过onmouseleave吗?
  • 我不确定如何正确显示问题已在 SO 上得到解决,但是 Roko C. Buljan - 这就像一个魅力!我知道有一个简单的答案...谢谢!

标签: javascript jquery html onmouseout


【解决方案1】:

onmouseleave 更加一致,但是...

我看到你使用 jQuery,所以去吧! LIVE DEMO

<div id="searchButton"> </div>

jQ:

$(function(){ // DOM is now ready

   function scrollBack() {
      $(this).scrollTop(0);
   } 

   $("#searchButton").on('mouseleave', scrollBack);

});

【讨论】:

    【解决方案2】:

    鼠标离开:https://developer.mozilla.org/en-US/docs/Web/Events/mouseleave

    onmouseout 也会在子元素上触发,即:

    <div id="searchbutton" onmouseleave="scrollBack();"><span>t</span><span>something longer</span></div>
    

    每当鼠标离开&lt;span&gt; 元素时,它也会触发。 onmouseleave 只会在最接近html 标签的地方响应。 (链接解释更准确)。如果您在该堆栈中只有一个 onmouseleave,它将仅响应该元素/节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-29
      • 2013-05-28
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多