2012-10-29 56 views
1

我有一个旧项目,其中包含带有重复ID的HTML。将选择器从IDS切换到类需要很多工作,我可以用JQuery来做到,特别是我知道我会隐藏多少个div。如何使jQuery与包含​​重复ID的无效HTML一起工作?

<div id="d"></div> 
<div id="d"></div> 
<div id="d"></div> 

我想用一个单一的动作来掩饰他们都:

$('#d').hide(); 

,但它只是隐藏了第一个div。

+0

有具有相同ID的几个元素是无效的HTML:http://stackoverflow.com/questions/7262195/several-elements- with-the-same-id-respond-to-one-css-id-selector/7262229#10262229 –

+0

你不能有多个具有相同ID的元素。你有没有尝试过类? –

+0

查看我的编辑:) – Fady

回答

2

您隐藏了id,由于您拥有非唯一ID,因此无法工作。添加一个data- *属性给他们或一个类作为标志。

<div data-someattributename="flag" id="d"> 

$('div[data-someattributename]').hide(); 

由于您的编辑:

$.each($('div'), function() { 
    If ($(this).attr('id')=="d") { 
     $(this).hide(); 
    } 
}); 

我不知道如果ID的第一个,因为它们复制后擦拭,但如果他们不,这应该工作。

+0

我编辑了这个问题:) – Fady

+0

@Fady你可以用$('div')把所有的div都拉出来,循环它们并检查它们的ID,做一个字符串比较为“d”,然后隐藏它们。 – Yatrix

+0

@Fady看我的编辑。 – Yatrix

3

ID应该是唯一的。尝试设置一个班级,然后基于此隐藏。

<div class="d"></div> 
<div class="d"></div> 
<div class="d"></div> 

$('.d').hide(); 
+0

我编辑了这个问题:) – Fady

1

使用类,而不是id属性,因为ID必须为每个元素的独特之处:

<div class="d"></div> 
    <div class="d"></div> 
    <div class="d"></div> 

然后:

$(document).ready(function(){ 
      $(".d").hide(); 
    }); 
0

您可以通过或者通过一个父类或DIV做像

(".parent_class/id>div").hide(); 

通过添加一个类,布兰登告诉

最重要的事情是ID亩是唯一

每个ID属性必须在文档中的独特价值。 ID和类选择之间

差异

唯一的区别是,当他们应该被使用。一个ID选择器通常被保留用于一次出现在页面上的东西。例如,如果您有一个包含多个主题标题的页面,但有一个特定的主题标题需要从其他主题标题中脱颖而出,则可以为该特定主题标题创建一个ID选择器规则。 ID选择器为其提供唯一的名称和标识,因此您可以更改该主题标题,而不会影响该集合的其余部分。

,如果你将验证与使用相同ID页面不止一次它会给你一个错误

相关问题