Javascript 当光标仍在元素上时,jquerymouseout将触发

Javascript 当光标仍在元素上时,jquerymouseout将触发,javascript,jquery,Javascript,Jquery,提前感谢所有愿意帮助的人。我的谜团是jQuery中的mouseout效应——我正在尝试构建一个函数,该函数将无限期地在容器中上下移动元素。悬停时,移动应停止并保持停止状态,直到光标完全离开图元。但是,发生的情况是,mouseover事件会正确触发,但是,mouseleave事件会在光标仍位于元素上方时立即触发,因此动画会中断 下面是简单的HTML: <div id="container"> <div class="element">Some text</div&

提前感谢所有愿意帮助的人。我的谜团是jQuery中的mouseout效应——我正在尝试构建一个函数,该函数将无限期地在容器中上下移动元素。悬停时,移动应停止并保持停止状态,直到光标完全离开图元。但是,发生的情况是,mouseover事件会正确触发,但是,mouseleave事件会在光标仍位于元素上方时立即触发,因此动画会中断

下面是简单的HTML:

<div id="container">
  <div class="element">Some text</div>
  <div class="element">Some other text</div>
  <div class="element">Some more text</div>
</div>

一些文本
其他一些文本
更多的文字
移动元素完全由javascript定位在顶部元素之上,并向下和向上移动,下面是


还有其他人要处理这个吗?谢谢

我认为您需要将鼠标插入和鼠标退出事件拉到动画功能之外。每次调用animate函数时,都会向每个元素添加另一个鼠标事件。这会导致它在鼠标移出时多次调用动画功能

这是一个例子,我添加了一个计数器来查看动画函数被调用了多少次

var counter = 0;
function animate(el, dir) {
   $("#count").val(counter);
   counter++;

将鼠标移过并移出几次,您可以看到每次鼠标移出时,它都在复合动画调用。

好的,我将悬停触发器移出动画函数,它确实停止了多个函数调用,并进行了更新。但是,mouseout效果仍然存在-当我将鼠标悬停在元素上时,mouseover会触发,并且mouseout事件会在之后立即触发,即使光标仍在元素上。我试图绑定悬停事件,但仍然没有成功…:(我认为发生的事情是当u鼠标输入div.element时,你将指针元素放在另一个div的正上方,使u鼠标离开,因为你的鼠标现在在指针上,而不是div.element。另外,如果你等到指针到达底部,将鼠标悬停在最后一个元素上,然后不移动鼠标,则鼠标进入并移动。)seout不会开火,因为你的鼠标正在进入指针OMG,你现在是这样,我完全忘了我正在将一个元素放置在悬停的元素上。当然,mouseout事件应该附加到移动div。我更新了,它工作了。问题现在解决了,谢谢Matt,谢谢。顺便问一下,你觉得怎么样完成了吗?还可以做得更好吗?我不是一个UI程序员,只是尝试一下而已…:)我喜欢你做这件事的方式,它移动的动画看起来不错。目前我唯一能想到的另一种方法是在一段时间内改变边框颜色,但这不会让它的动画变得很酷。是的,这正是我一开始计划要做的,但我认为移动元素看起来比仅仅改变元素类或smth这样更好。不管怎么说,这个东西现在似乎正在工作,悬停效果出现了一些小故障,每次触发事件时我都必须清除超时。谢谢你的建议,马特,我肯定会投票给你答案,但我是个新手,他们说我还不能这么做:(