0

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

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] is undefined”,但“从低到高”没有错误。

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

4

1 回答 1

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

您的从高到低的循环条件是错误的。这是一个无限循环,因为istartslibrary.length-1每一轮都在变小,并且会比library.length永远小。你想要的是

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

当索引转到 时-1,您当前的代码会因为访问 上的属性而引发异常undefined,并且会暂停执行,因此不会附加事件处理程序。

于 2013-08-05T10:20:02.630 回答