2011-11-23 71 views
3

嗨,我想隱藏很多元素。我是否需要單獨隱藏每個或可以使用FOR? 如果是這樣,該怎麼辦?jQuery FOR語句

我有這樣的代碼:

for (I=0; I <11; I++){ 
     $('div#r'+I).hide(); 
    } 

但我不知道是什麼exacly寫的內部。而這一次可能是錯寫成。

+4

只要給所有的人一個班,然後使用類選擇隱藏起來。 –

+0

我不認爲正則表達式解決方案是一個很好的方法,它更難以編碼,閱讀和維護。使用類和選擇器,這就是他們在那裏。 – Jason

回答

2

您可以隱藏所有以特定ID開頭的div

$('div[id^="r"]').hide(); 

,但我會推薦給他們的一類,這使得它更容易

<div class="hidethis" id="r0">hidden</div> 
<div class="hidethis" id="r1">hidden</div> 
<div class="hidethis" id="r2">hidden</div> 

然後

$(".hidethis").hide(); 
0

如果每個元素都有一個共同的類,它將更容易將它們隱藏在一行中;而不必遍歷每個Id。

$('.divToHide').hide(); 
1

這沒有錯。只是從你選擇刪除div,這可能使它更快

$('#r'+I).hide(); 

或者,如果你想隱藏組的div,剛剛從標識開關類。在這種情況下,它可能看起來像

<div class="r">hide this</div> 
<div class="r">hide this</div> 
<div class="r">hide this</div> 
<div class="r">hide this</div> 
<script> 
$('.r').hide(); 
</script> 

這將隱藏所有

1

你可以用它來獲取所有的元素以r開頭

$('div[id=^r]').hide() 

或者,如果你只想要的ID與的R開始,然後有一個整數

$("div").filter(function() { 
    return $(this).attr("id").match(/r[\d]/); 
}).hide(); 
+0

Typo'id =^= r'需要是'id^= r'。我修好了,猜想它被覆蓋了。 –

+0

Thnx,是的,我已經添加了一個匹配,只有R +號碼是合法的,當我更新它時,您可能會改變它。 – Niels

1

這可能使許多更有意義的使用somekind的的selector抓住所有你要隱藏的元素,然後只執行整套包裝上整套.hide()

1

取而代之的是for循環,您可以使用JQuery選擇與regex選擇div首發與r後面跟着一個數字和hide()他們:

$('div:regex(id, ^r[0-9]+)').hide(); 
+1

請不要發佈代碼片段作爲答案。解釋你是如何到達這個解決方案的,以及它是如何工作的。現在,我已經低估了這一點。 –

+0

@KevinVermeer我認爲這是相當自我解釋。如果您認爲他們不清楚,您可以隨時編輯問題和答案。我不確定究竟應該添加什麼;以防萬一。 – fardjad

5

跟進interstellar_coder的建議,你會做什麼這樣

HTML:

<div class="hide-me" id="r0">this will be hidden</div> 
<div class="hide-me" id="r1">this too</div> 
<div class="hide-me" id="r2">this also</div> 

隱藏他們都

JQUERY:

$("#hide-them").click(function() { 
    $(".hide-me").hide(); 
}); 
1

要遍歷您需要.each和隱藏使用.hide

1

應用共享類的工作,但你可能只是做一個包含搜索編號:

$("div[id^='r']").hide();