1

我有一个鼠标悬停和鼠标悬停,我在鼠标悬停时隐藏/显示一些 div,然后在鼠标悬停时反转隐藏/显示。它可以工作,但是如果我快速将鼠标移到我正在悬停的 div 上以显示 div,它将来回移动大约 3 次,显示和隐藏。我错过了什么?

$("TABLE.tbl-graphs DIV.util").mouseover(
    function(){
        $("DIV.pic-container, DIV.util-info").hide("slow");
        $("DIV.util-description").show("slow");
    });
$("TABLE.tbl-graphs DIV.util").mouseout(
    function(){
        $("DIV.pic-container, DIV.util-info").show("slow");
        $("DIV.util-description").hide("slow");
    });
4

4 回答 4

2

.stop()在调用.show()或之前使用.hide()。您可能还想使用mouseenterand mouseleave- 区别在于事件冒泡。

试穿这个尺寸:

var $divs = $("div.pic-container, div.util-info, div.util-description");

$("table.tbl-graphs div.util").live('mouseenter mouseleave'
function() {
    $divs.stop().toggle("slow");
});

请注意,<div>要显示/隐藏的 s 需要处于正确的初始状态才能正常工作。

于 2011-04-13T18:16:52.033 回答
0

我想你正在寻找出队:http ://api.jquery.com/dequeue/

这不允许排队事件(例如,将鼠标悬停在 div 上并让它淡入和淡出三次,只有一次)

于 2011-04-13T18:14:06.363 回答
0

解决这个问题的一种常见方法是使用一个简单的标志,所以如果它当前正在做某事,它会忽略鼠标请求,例如

if(flag) return;
flag = true

然后将 flag = false 的回调添加到您的函数

于 2011-04-13T18:15:24.967 回答
0

尝试 .stop(true, true) 以防止动画排队。 http://api.jquery.com/stop/

您可能还想查看 .hover(handlerIn, handlerOut)。http://api.jquery.com/hover/#hover1

于 2011-04-13T18:20:55.447 回答