快速连续触发的jQuery会导致问题

时间:2012-12-31 13:25:11

标签: jquery

我制作一个比较图表,用户可以在一个功能上漂浮,一个小方框(div)滑出来提供详细信息(比如说' somethingBox1')

我完全正常工作,但是当鼠标将一个活动区域(id =" something1"的图像)留在另一个床上时幻灯片动画结束时(图像id = "某事2"让我们说)

在运行下一个事件之前,浏览器似乎没有等待上一行/动画完成,并导致诸如框之类的问题混淆是否可见。

我正在为每个元素触发此代码:

$('#something1').mouseleave(function() {$("#somethingBox1").animate({width:'toggle'},0);});
$('#something1').mouseover(function(){timeout = window.setTimeout(function() {$("#somethingBox1").animate({width:'toggle'},0);}, 350);}); 

2 个答案:

答案 0 :(得分:0)

尝试使用stop,这将停止当前的动画。我喜欢动画完成动画(立即),以确保新动画的行为符合预期。

这样的事情:

$('#something1').hover(
    function() {
        $(this).stop(true, true).wait(350).animate({width:'toggle'}, 0);
    },            
    function() {
        $(this).stop(true, true).animate({width:'toggle'},0);
    }
);

(我没有测试过这段代码。)

答案 1 :(得分:0)

在阅读了有关该主题的更多信息之后,我在完成时遇到了呼叫功能,

我在每个.animate函数的末尾添加了function(){},它似乎让浏览器等待(在chrome,safari,opera,firefox中测试)

$('#infolink6').mouseleave(function() {$("#infoBox6").animate({width:'toggle'},350, function(){});});
$('#infolink6').mouseover(function(){timeout = window.setTimeout(function() {$("#infoBox6").animate({width:'toggle'},350, function(){});}, 0);});