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秒,我看到按钮突然改变了。
答案 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); }, 时间) }