2012-10-16 48 views
0

我建設有一些這樣的元素的數組元素:陣列和使用jQuery

var listAccordions = []; 
$("#accordeon ul.sub-menu.ui-accordion").each(function() { 
listAccordions.push("#" + $(this).parent().attr('id') + " ul.sub-menu"); 
}); 

一切工作在這裏很好,我有我的陣列,它是很好的,現在我想用它像這樣:

$(listAccordions).hide(); 

但這似乎不工作?

非常感謝您的幫助

回答

0

你將不得不遍歷listAccordions,並呼籲hide爲每一個。

for (var i = 0; i < listAccordions.length; i++) { 
    $(listAccordions[i]).hide(); 
} 
+0

它也可能是一種解決方案,我猜「for」解決方案甚至比「each」更快... – moabi

0

listAccordions在內存中,而不是DOM。您可以爲這些元素添加類名稱,然後使用類名稱來隱藏它們 - 如果您打算將此集合用於其他事物。否則,將它們隱藏在循環中。

0
$.each(listAccordions,function(i,item) { 
    $("#"+item).hide(); 
}); 

將工作。你的陣列是一個字符串數組

var listAccordions = []; 
$("#accordeon ul.sub-menu.ui-accordion").each(function() { 
    listAccordions.push($("#" + $(this).parent().attr('id') + " ul.sub-menu")); 
}); 

listAccordions.each(function() { 
    $(this).hide() 
}); 

應太

0

試着這麼做

$(listAccordions).each(function() { 
    $(this).hide(); 
} 
+0

nope。沒辦法... – mplungjan

2

你可以這樣說:

$(listAccordions.join(',')).hide(); 

但合理的問題:爲什麼你需要有這樣的數據結構?

+0

啊 - 也不錯。 – mplungjan

+0

好的,謝謝,它似乎工作,以及有關數據結構: 我需要:#myid-8798 ul.sub-menu 所以我雖然我會直接在數組中做這件事,我還需要將它與一個元素進行比較我不需要在數組中,這個元素已經是這種格式...所以...一個更好的方法? – moabi