簡體   English   中英

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

[英]Iteration over jquery object returning string instead of dom elements

我有以下循環:

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

wizardScreens定義為$(".wizardScreen", wizard); ,其中wizard是一個DOM元素。 在循環中, myScreen設置為字符串,而不是DOM元素。 任何人都可以解釋為什么會這樣嗎?

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

這完全避免了顯式迭代。

一般來說,答案是.each ,但它會為每個DOM元素調用一個函數,這比使用jQuery函數一樣,這個函數一次操作jQuery對象中的所有節點,所以最好盡可能避免它。 在這種情況下,它絕對是可能的:

wizardScreens.hide().eq(step).show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM