使用jQuery处理多个ID

84

这段代码中可以处理多个id吗?

<script>
$("#segement1, #segement2, #segement3").hide()
</script>

<div id="segement1"/>
<div id="segement2"/>
<div id="segement3"/>
2个回答

147

是的,使用 #id 选择器 加上一个 多元素选择器(逗号)在 jQuery 和 CSS 中都是完全有效的。

然而,对于您的示例,由于 <script> 出现在元素之前,您需要一个 document.ready 处理程序,这样它就会等待元素出现在 DOM 中后再去查找它们,像这样:

<script>
  $(function() {
    $("#segement1,#segement2,#segement3").hide()
  });
</script>

<div id="segement1"></div>
<div id="segement2"></div>
<div id="segement3"></div>

如果 div 没有内容,我们可以只写 <div id="segment1" /> 对吗? - Rajeev
3
@Rajeev - 不是自闭合元素 :) - Nick Craver
如果这些div是自动生成的 #segment{i},而且它们的数量是不确定的,那该怎么办? - Reveclair
2
如果必须这样做,可以使用 ["starts with" attribute selector] (http://api.jquery.com/attribute-starts-with-selector/),像这样: $("[id^=segement]").hide()(在一定程度上将其限制在父元素内是个不错的想法)。 - Nick Craver

1
解答:

解决方案:

关于您的次要问题

var elem1 = $('#elem1'),
    elem2 = $('#elem2'),
    elem3 = $('#elem3');

你可以使用变量来代替选择器。

elem1.css({'display':'none'}); // 可行

在下面的情况中,选择器已经存储在一个变量中。

$(elem1,elem2,elem3).css({'display':'none'}); // 不可行


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接