javascript - 子元素触发的鼠标悬停事件 - 如何停止?

标签 javascript mouseevent prototypejs dom-events scriptaculous

我有这个界面,我想使用 Effect.Move 从 scriptaculous 构建(当然还有 Prototype)。

当顶部 div 在鼠标悬停时被触发时,span 标记将向左移动 50 像素 - 并在鼠标移出时重置而不移动到原始位置。问题是,任何时候从子元素输入此 div 元素时,我要移动的元素都会额外移动 50 像素。我试过使用 relatedTargettoElement 来阻止传播此事件,但无济于事。这是代码,目前还不完整:

e.observe('mouseover', function(evt) {
   var block = e.down('span');

   if(evt.target == block && !evt.relatedTarget.descendantOf(block)){
    new Effect.Move(block, { x: -50, duration: 0.4, 

    });
   } else {

   }

  });

HTML 示例:

<div class='trigger'>
  <span class='to-be-moved'>...</span>
  <p>Child Element</p>
  <h2>Another Child Element</h2>
  <a>Link</a>
</div>

我完全迷失在这里 - 有什么建议吗?

最佳答案

您是否尝试使用 "mouseenter" and "mouseleave"而不是“鼠标悬停”和“鼠标悬停”?即使有子元素,它们也只会触发一次,并且 Prototype supports it since 1.6.1 .

关于javascript - 子元素触发的鼠标悬停事件 - 如何停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095546/

相关文章:

c# - 如何在单击按钮、超链接或链接按钮时关闭网页?

jquery - 什么时候选择 mouseover() 和 hover() 函数?

javascript - 使用 Prototype 遍历到特定的子元素

html - 使用 Prototype 隐藏所有具有特定类的 div?

javascript - JS : Remove Element from an Array based on RegExp

JavaScript:在多个元素上添加/删除单个类

css - 变换平移和 e.pageX/e.pageY 坐标不同

javascript - JQuery + Prototype.js 潜在冲突

javascript - 输入类型数字无法正常工作

javascript - 如何在 Co-Request 模块和 NodeJs 中对文件进行管道响应?