2011-11-23 70 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();