使用鼠标悬停在div上的Jquery fadeIn和fadeOut问题

时间:2009-07-16 19:49:10

标签: javascript jquery animation

我有这段代码:

var x;
x=jQuery(document);
x.ready(inicializarEventos);

function inicializarEventos()
{
    var x;
    x=jQuery(".Caja2");
    x.hover(entraMouse,saleMouse);
}


function entraMouse()
{
    jQuery(this).fadeOut();
}

function saleMouse()
{
    jQuery(this).fadeIn();
}

问题在于,当我将鼠标移到盒子上时,它会开始逐渐淡入和淡出,直到停止鼠标移动为止。

如果我将鼠标移入和移出盒子的次数比褪色快几倍,那么其他不好的行为就会发生,它会一遍又一遍地保持效果。

当鼠标回到盒子上时,我需要一些可以停止动画的东西。

5 个答案:

答案 0 :(得分:2)

关于第二个问题:

如果你的动画是“累积”,当你在框上运行鼠标时,你可以通过先调用stop()来解决这个问题。像这样:

jQuery(this).stop().fadeOut();


jQuery(this).stop().fadeIn();

答案 1 :(得分:1)

当你调用fadeOut()时,它最终会使项目完全不可见,这可能会触发 mouseOut 事件。

也许你可以使用非常低数字的fadeTo()方法,所以它不会消​​失:

function entraMouse()
{
    jQuery(this).fadeTo("fast",0.01);
}

function saleMouse()
{
    jQuery(this).fadeTo("fast",1.0);
}

答案 2 :(得分:0)

也许你可以有一个布尔变量让我们说它是“is_faded_out”并相应地设置为true或false?

答案 3 :(得分:0)

这可能是由于冒泡效应,让我们说你有一些div有一些内容:

< DIV> <跨度>你好< /跨度> < p为H.世界< / p为H. < / DIV>

然后,Hello跨度的悬停事件和世界paragrapgh被捕获在div的悬停事件监听器中。

答案 4 :(得分:0)

我遇到了类似的问题,并用以下方法解决了这个问题:

function entraMouse()
{
    if (!jQuery(this).is(':hidden')) jQuery(this).fadeOut();
}

function saleMouse()
{
    if (jQuery(this).is(':hidden')) jQuery(this).fadeIn();
}