我有以下循环:
for(var myScreen in wizardScreens){
if(step==index)$(myScreen).show();
else $(myScreen).hide();
index++;
}
wizardScreens
定义为$(".wizardScreen", wizard);
,其中wizard
是DOM元素。在循环内,myScreen
设置为字符串,而不是DOM元素。任何人都可以解释为什么会这样吗?
答案 0 :(得分:3)
jQuery集合已经具有内置的迭代功能:
wizardscreens.each(function (index, screen) {
if (index == step)
$(screen).show();
else
$(screen).hide();
}
或者甚至可能更适合您的使用:
var activescreen = wizardscreens.eq(step);
activescreen.show();
wizardscreens.not( activescreen[0] ).hide();
这完全避免了显式迭代。
答案 1 :(得分:1)
一般来说,答案是.each
,但它为每个DOM元素调用一个函数,这比使用jQuery函数一样慢,jQuery函数一次操作jQuery对象中的所有节点,因此最好每次都避免使用它。可能。在这种情况下,它绝对是可能的:
wizardScreens.hide().eq(step).show();