[英]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.