dom元素id相等

时间:2015-05-25 17:16:06

标签: html dom

如果两个DOM元素的ID设置为空字符串,那么它们是否具有相同的ID?

示例:

$('#something').attr('id', '');
$('#something-else').attr('id', '');
//do these now have the same id?
//is there a better way to unset an element's id?

并且它等于声明没有id的元素

<div></div>
<div id=''></div>
<div id></div>
<!--how do these compare??-->

1 个答案:

答案 0 :(得分:3)

id属性在HTML 4HTML5中不能合法地包含空字符串。也就是说,选择器[id][id=""]仍会匹配这些元素,如果它们出现在不合格的文档中。请注意,空id属性与id属性的 lack 不同。

将元素的id属性设置为脚本中的空字符串似乎有效(DOM level 4 seems to forbid it,但这可能是新的,因为它未在DOM级别3或2中指定),允许它与上述选择器匹配即使在同一文档中还有其他具有空id属性的元素。这意味着元素现在都具有相同的ID,但是考虑到元素在一致的文档中不能有空ID,我不确定该语句是多么真实。请参阅以下示例:

document.getElementById('something').id = '';
document.getElementById('something-else').id = '';
div[id=""] {
  color: red;
}

#something {
  color: blue;
}
<div>No id</div>
<div id=''>Empty id</div>
<div id='something'>#something</div>
<div id='something-else'>#something-else</div>

//is there a better way to unset an element's id?

要删除元素的id属性,请在jQuery中使用removeAttribute()(或removeAttr()):

document.getElementById('something').removeAttribute('id');
$('#something-else').removeAttr('id');