【问题标题】:jquery animate disabled after sorted high to lowjquery animate 在从高到低排序后禁用
【发布时间】:2013-08-06 00:14:04
【问题描述】:

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

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),但它只是在“从高到低”上不起作用的动画。

【问题讨论】:

    标签: jquery sorting multidimensional-array jquery-animate


    【解决方案1】:
    for (i=upperlimit; i<library.length; i=i-1){
    

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

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

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

    【讨论】:

    • 我明白了!这样可行。太好了,凌晨 4 点工作对我来说并不聪明。
    猜你喜欢
    • 2020-08-10
    • 1970-01-01
    • 2020-11-12
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2021-07-16
    相关资源
    最近更新 更多