setInterval运行速度很慢

时间:2014-09-15 15:24:21

标签: javascript jquery jquery-animate

我创建了一个网站,我需要设置比包含父级更长的字符串。

这是网站:Here

如果你点击下一步,你可以看到多个具有长名称的育种者页面,需要从左到右动画,但这只发生在10或15秒之后,它需要很长时间才能启动。 / p>

现在我检查了我的代码,这是我创建函数的地方:

function newsTicker() {
console.log('newsTicker')
verifyLength();
$('.breeder').not('.short-breed-name').each(function() {
    var breederNameWidth = $(this).find('.breeder_name').width();
    var divBreederNameWidth = $(this).find('.breeder_name_div').width();
    var diff = Math.max(parseInt(breederNameWidth - divBreederNameWidth),0);
    // console.log('diff:',diff)
    $(this).find('.breeder_name').animate({
        marginLeft: -diff
    }, 3000,
    function(){
        $(this).animate({
            marginLeft : 0
        },3000)
    })
})
}

function verifyLength() {
    // console.log('verifyLength')
    $('.breeder.visible').each(function() {
        // debugger
        var breederNameWidth = $(this).find('.breeder_name').width() + 10;
        var divBreederNameWidth = $(this).find('.breeder_name_div').innerWidth();
        if(breederNameWidth < divBreederNameWidth) {
            $(this).addClass('short-breed-name');
            $(this).find('.breeder_name').css({'width':'100%','text-align':'center'})
        }
    })
}

这就是我所说的newsTicker:

function breederAnimate(){
    verifyLength();
    newsTicker();
    setInterval(newsTicker, 1000);
}

为什么当我的时间在1到3秒之间时这么慢?

1 个答案:

答案 0 :(得分:1)

您应该调用setTimeout而不是setInterval,因为您只希望动画运行一次。您每秒都要重新启动动画

此外,当您单击下一个或上一个

时,您应该取消现有的setIntervals