从版本升级时,jQuery JS不再有效

时间:2015-02-04 02:40:50

标签: jquery deprecated

当我将以下JS函数从jQuery 1.4.2更新到最新的1.11.2时,className Steam不再具有动画效果。

$(window).load(function(){
    function animSteam(){
        $('<span>',{
            className:'steam'+Math.floor(Math.random()*2 + 1),
            css:{
                marginLeft    : -10 + Math.floor(Math.random()*20)
            }
        }).appendTo('#rocket').animate({
            left:'-=58',
            bottom:'-=100'
        }, 120,function(){
            $(this).remove();
            setTimeout(animSteam,10);
        });
    }
    function moveRocket(){
        $('#rocket').animate({'left':'+=100'},5000).delay(1000)
        .animate({'left':'-=100'},5000,function(){
            setTimeout(moveRocket,1000);
        });
    }
    moveRocket();
    animSteam();
});

这是一个很酷的动画,我讨厌放松,我不确定哪个功能已被弃用。

2 个答案:

答案 0 :(得分:2)

  

名称“class”必须在对象中引用,因为它是一个JavaScript保留字,并且不能使用“className”,因为它引用了DOM属性,而不是属性。

参考:http://api.jquery.com/jQuery/#jQuery-html-attributes

答案 1 :(得分:2)

检查出来:http://bugs.jquery.com/ticket/9150#comment:1

  

这从未得到支持,巧合的是它有效。要设置的属性是class,而不是className。

所以,看起来你想要的是:

    $('<span>',{
        'class': 'steam'+Math.floor(Math.random()*2 + 1),
        css:{
            marginLeft    : -10 + Math.floor(Math.random()*20)
        }
    })