jQuery .stop()没有工作效果摇动悬停

时间:2012-01-20 01:36:56

标签: jquery shake

我有jQUery代码:

setInterval(function() {

    var grayarrow = jQuery("ul#dropdowngray").parent(); 
    var greenarrow = jQuery("ul#dropdown").parent();

    grayarrow.effect('shake', { times:2 }, 100);
    greenarrow.effect('shake', { times:3 }, 200);

    jQuery("ul#dropdowngray").parent().hover( 

        function (){ grayarrow.stop().effect('shake', { times:0 }, 100); },

        function (){ grayarrow.stop().effect('shake', { times:2 }, 100); }

    );

    jQuery("ul#dropdown").parent().hover( 

        function (){ greenarrow.stop().effect('shake', { times:0 }, 100); },

        function (){ greenarrow.stop().effect('shake', { times:2 }, 100); }

    );

}, 5000);

要查看效果:http://mainstreetfinancing.com.s136249.gridserver.com/frequently-asked-questions-direct-lender-net-lender.html

然而,当我将鼠标悬停在元素上时,摇晃继续执行。最初,我有代码:

jQuery("ul#dropdowngray").parent().hover( 

            function (){ grayarrow.stop(); },

            function (){ grayarrow.stop(); }

        );

但是,由于这也不起作用,我实施了这里讨论的解决方案:jquery .stop() not working

当鼠标悬停在摇动元素上时,如何有效地停止摇动?

谢谢,

1 个答案:

答案 0 :(得分:2)

要立即停止,您需要将2个参数(clearQueue:true,jumpToEnd:true)传递给stop()调用,请参阅http://api.jquery.com/stop/。您还应该设置一个变量来控制setInterval调用,这样当鼠标悬停在元素上时,它应该立即返回。这是代码。要查看效果,请转到http://jsfiddle.net/BT4bt/

var stopShaking = false;


var shakeIt = function() {
    $('#shaker').effect('shake', { times: 6 }, 100);
}

setInterval(function() {
    if (stopShaking) {
        return;
    }
    shakeIt();
}, 5000);

$('#shaker').hover(function(){
    $(this).stop(true, true);
    stopShaking = true;
}, function(){
    stopShaking = false;
})