我在这样的元素中添加了一个类:.addClass('middle_item')
然后我注意到该类是唯一的,所以我应该将其更改为id .attr("id", 'middle_item');
,对吗?
那么,我可以在已经有id的元素中添加另一个id吗?
如果答案是肯定的,那么有什么方法可以获取并保存变量中的第一个id?
答案 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 1.6开始,.attr()方法为尚未设置的属性返回undefined。要检索和更改DOM属性(如表单元素的已选中,已选择或已禁用状态),请使用.prop()方法。