是否可以为已经具有id的元素添加id

时间:2015-05-22 13:56:59

标签: javascript jquery html

我在这样的元素中添加了一个类:.addClass('middle_item')

然后我注意到该类是唯一的,所以我应该将其更改为id .attr("id", 'middle_item');,对吗?

那么,我可以在已经有id的元素中添加另一个id吗?

如果答案是肯定的,那么有什么方法可以获取并保存变量中的第一个id?

Example Fiddle here

3 个答案:

答案 0 :(得分:2)

不,这是不允许的。 。 。虽然HTML 4和HTML 5在“合法ID值”方面存在差异,但它们的共同点之一是值中不允许使用空格:

HTML 4定义 - http://www.w3.org/TR/html4/types.html#type-id

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

HTML 5定义 - http://www.w3.org/TR/html5/dom.html#the-id-attribute

  

该值必须在元素的主子树中的所有ID中唯一,并且必须至少包含一个字符。该值不得包含任何空格字符。

因此,如果没有空格,您只能拥有一个ID值。

答案 1 :(得分:2)

就像@Pointy所说,你只能在一个元素上拥有1个ID。您似乎正在尝试将ID或类应用于<li>以便以后获取它?如果是这样,有更好的方法可以使用:nth-child()选择器使用jQuery获取列表中的中间项,就像在this帖子中一样。选择器文档here

答案 2 :(得分:2)

每个元素只能有一个id,请参阅this answer for more details,因此您必须删除之前的ID,但这很奇怪。

考虑到这一切,以下是你如何实现这一目标,但我不认为这实际上是你想要的

$("#listitem1").removeAttr("id").attr("id", "newID")

在上面的代码中,我通过首先选择#listitem1然后删除它的id属性并最终应用新的id来链接方法。

同样在你的例子中var i = $("middle_item").attr("id");返回undefined因为id永远不会应用但如果你犯了两个错误:首先你写$("middle_item")时它应该是$("#middle_item")而第二个因为你没有先删除之前的id

jQuery Docs

  

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined。要检索和更改DOM属性(如表单元素的已选中,已选择或已禁用状态),请使用.prop()方法。