jquery animate在从高到低排序后被禁用

时间:2013-08-05 10:12:31

标签: jquery sorting multidimensional-array jquery-animate

我有一个常规排序,可以将项目从“从高到低”追加:

library.sort(function(a, b) { return a.year - b.year; });
upperlimit = library.length-1

    for (i=upperlimit; i<library.length; i=i-1){
        //source.sort(function(a, b) { return a.year - b.year; });
        item = "<div class='item' style='background-image:url(" + library[i].source + ");' ><h2>" + library[i].title + "</h2></div>"
        $("#list").append(item);
    }

但实际上,从“从高到低”附加,它会以某种方式禁用其他功能:

    $(".item h2").css({"bottom":"-135px"});

    $(".item").hover(
        function(){
            $(this).find("h2").animate({"bottom":"-85px"},300)
        },
        function(){
            $(this).find("h2").animate({"bottom":"-135px"},150)
        }
    );

然而,当它被写为从“低到高”追加时,

for(i=0; i<library.length; i=i+1)

动画效果很好。

在Firebug上,当写入“从高到低”时,它会显示错误“TypeError:library [i]未定义”但是“从低到高”没有错误。

对于两者而言,一切都正确显示(图像和隐藏的h2),但它只是在“从高到低”不起作用的动画。

1 个答案:

答案 0 :(得分:0)

for (i=upperlimit; i<library.length; i=i-1){

您的高到低循环条件错误。这是一个无限循环,因为i开始library.length-1,每回合变小,并且将永远小于library.length。你想要的是

for (i=library.length-1; i>=0; i=i-1){

当索引转到-1时,由于访问undefined上的属性而导致当前代码抛出异常,并且暂停执行,因此未附加事件处理程序。