每个功能

时间:2012-03-20 10:15:28

标签: jquery each

hii我在页面中有680个按钮,我希望在每个函数上运行一个函数。这是代码:

$("button#check_all").button().click(function(){
    btns=$(".viewport").find('.third_cat_chb');//here are all 680 btns
    this_btn=$(this);
    count=btns.size(); //680
    cpt=0;
    btns.each(function(){
        cpt += 100/count;
        if($(this).is(".cat_chb_off")){
            $(this).trigger('click');
        }
        $("#progressbar").progressbar({ value : cpt});
    });
    $("#progressbar").hide('slow');
});

问题是我希望当我单击以全部选择按钮时立即更改按钮,而不是设置间隔,而是单独和在线完成每个按钮。 但真正发生的是该网站停留超过35秒,我看到按钮突然改变了。

2 个答案:

答案 0 :(得分:1)

问题在于进度条,你不是简单地在每个循环中设置值,而是在每个循环中初始化它。

在每个内部初始化进度条,在每个内部仅设置值:

$( "#progressbar" ).progressbar( "option", "value", cpt );

但是,如果你看到任何变化(在进度条或按钮中),它将取决于浏览器,这是一个非常快速的过程,建议修改,并且通常浏览器在你进入循环时不会重新渲染。< / p>

答案 1 :(得分:0)

这是答案:

//check buttons:
$("button#check_all").button({
    icons: {
        primary: "ui-icon-battery-3"
    },
    text: false
}).click(function(){
    btns=$(".viewport").find('.third_cat_chb');
    this_btn=$(this);
    count=btns.size();
    move_over(0,1);
});

function move_over(i, time){
    var btn = btns.eq(i);
    cpt += 100/count;
    if(btn.is(".cat_chb_off")){
        btn.trigger('click');
    }
    $("#progressbar").progressbar({ value : cpt});

正如你所看到的,我根本不会使用它们!         的setTimeout(函数(){             move_over(++ i,time);         }, 时间)     }