迭代jquery对象返回字符串而不是dom元素

时间:2010-08-25 05:06:50

标签: javascript jquery

我有以下循环:

for(var myScreen in wizardScreens){
    if(step==index)$(myScreen).show();
    else $(myScreen).hide();
    index++;
}

wizardScreens定义为$(".wizardScreen", wizard);,其中wizard是DOM元素。在循环内,myScreen设置为字符串,而不是DOM元素。任何人都可以解释为什么会这样吗?

2 个答案:

答案 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();