jquery - 当鼠标下方的元素移动时,如何阻止 mousemove() 执行?

标签 jquery

我正在使用 SO 用户的这段代码:

   $("#rightSubMenu").mousemove(function(e){
      console.log('executed');
      var h = $('#rightSubMenuScroller').height()+13;
      var offset = $($(this)).offset();
      var position = (e.pageY-offset.top)/$(this).height();
      if(position<0.33) {
         $(this).stop().animate({ scrollTop: 0 }, 1000);
      }
      else if(position>0.66) {
         $(this).stop().animate({ scrollTop: h }, 2000);
      }
      else
      {
         $(this).stop();
      }
   });

基本上,它的作用是,每当您将鼠标悬停在 rightSubMenu 上时,它就会移动 #rightSubMenuScroller(位于 #rightSubMenu 内)。问题是,每移动一个像素,它就会再次执行整个函数,从而导致动画滞后。

当我激活滚动并将鼠标移离元素时,动画效果很好。

我需要修复代码,使其不会滞后。有什么想法吗?

最佳答案

您应该添加event.stopPropagation()在本次事件通话结束时。

$("#rightSubMenu").mousemove(function(e){
  // You code...
  e.stopPropagation();
});

这将防止事件在 DOM 树中冒泡。

或者,根据您的 DOM 结构,尝试 event.stopImmediatePropagation()它使所有其他事件处理程序保持执行。

关于jquery - 当鼠标下方的元素移动时,如何阻止 mousemove() 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873153/

相关文章:

javascript - 设置 JavaScript 对象的格式

jquery - ExpandTitle(...) 不是函数

jquery - 如何防止自动完成jquery中的默认选择事件

javascript - "recursive"回调会导致堆栈溢出吗?

jquery - 如何让日期只看 jsp yyyy-mm-dd 格式 - 截断时间

jQuery 将光标聚焦在 firefox 中的值之后

javascript - 当元素少于 3 时,旋转木马 slider 停止克隆

javascript - jQuery 单击事件在第一次单击时未运行。 (转到页面顶部操作)

javascript - jQuery/javascript - 尝试将对象的函数作为参数传递给函数

使用 Spring 3 MVC 和 jQuery 的 JSON 响应