是否可以将 id 添加到已经有 id 的元素
Posted
技术标签:
【中文标题】是否可以将 id 添加到已经有 id 的元素【英文标题】:Is it possible add an id to an element which already has an id 【发布时间】:2015-08-04 14:11:02 【问题描述】:我正在向这样的元素添加一个类:.addClass('middle_item')
然后我注意到该类是唯一的,所以我应该将其更改为 id .attr("id", 'middle_item');
,对吗?
那么,我可以向已经有 id 的元素添加另一个 id 吗?
如果答案是肯定的,有什么方法可以获取第一个 id 并将其保存在变量中?
Example Fiddle here
【问题讨论】:
没有特别的理由将类更改为 id,因为它是该类的唯一元素。一个元素只能有一个 id,但它可以有多个类。 @Pointy 我只想将类更改为 id,因为我知道如果只有一个元素可以具有该类,那么该类应该是一个 id 你应该忘记这个概念,因为它真的没有意义。 @Pointy - 你应该在这里指出他的答案:***.com/questions/14005978/… :) @talemyn 哇那天我着火了 :) 【参考方案1】:不,这是不允许的。 . .虽然 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 值。
【讨论】:
【参考方案2】:就像@Pointy 所说,一个元素只能有 1 个 ID。似乎您正在尝试将 ID 或类应用于 <li>
以便稍后获取它?如果是这样,有更好的方法可以使用 jQuery 使用 :nth-child()
选择器获取列表中的中间项,就像在 this 帖子中一样。选择器文档here。
【讨论】:
【参考方案3】:每个元素只能有一个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() 方法。
【讨论】:
以上是关于是否可以将 id 添加到已经有 id 的元素的主要内容,如果未能解决你的问题,请参考以下文章