向元素添加多个唯一ID

时间:2013-02-07 16:09:13

标签: javascript jquery

我需要为元素添加第二个唯一ID。

我用它来生成新ID

var id = 1;
function getNextId()
{
    return ++id;
}

然后我这样做

$('<div id="content '" + getNextId() +"'" class="span6"></div>').appendTo('.new');

但我得到Uncaight SyntaxError: Unexpected identifier

如何添加多个ID,其中第二个是唯一的?

(我删除了点击后的第一个ID,所以我可以将#content留在那里)

此处讨论了元素上的多个ID:Can an html element have multiple ids?

5 个答案:

答案 0 :(得分:6)

  

如何添加多个ID,其中第二个是唯一的?

你做不到。

您不能在一个元素上拥有多个ID。每个元素得到零个或一个ID,就是这样。如果要添加其他内容来选择元素,可以使用类。

您的语法错误是由于一些非常混乱的引号;我怀疑你想这样做:

$('<div id="content newId' + getNextId() + '" class="span6"></div>')

生成类似<div id="content newId3">的内容,但无效。你没有给它两个ID,你给它一个带有空格的ID,这是一个无效的ID:

  

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

答案 1 :(得分:2)

您的代码存在两个问题:

  1. 'a'b无效的JavaScipt。试试'a' + b

  2. HTML ID中不允许使用空格字符。即使它们是,id属性中的所有字符都将构成ID,因此您不能为元素分配多个ID。请改用class

答案 2 :(得分:1)

看起来像:

$('<div id="content '+ newId + getNextId() +'" class="span6"></div>').appendTo('.new');

我敢打赌,这是更正确的

答案 3 :(得分:0)

请改为尝试:

$('<div id="content-' + getNextId() + '" class="span6"></div>').appendTo('.new');

答案 4 :(得分:0)

我认为一个很好的开始就是在那里添加+

'<div id="id-' my_id_var '"></div>'

只是不会起作用。

"<div id=\"id-" + getNextID() + "\"></div>"

但是工作得不错。

第二个问题,每个元素都有 1 ID 关键是要给出一个ID来使元素唯一可识别的 为什么你希望元素可以唯一识别两次

还有很多其他方法可以做到这一点。

首先,你有class 如果您正在处理需要类似状态的对象(“选定”,“新闻文章”,“用户交互”),请使用类。

然后,您有data-个属性。

<div id="player_1"
     class="player-character"
     data-health="42"
     data-x="320"
     data-y="240"
     data-speed="5"
    ><img src="..."
></div>

然后在JS中,您可以执行以下操作:

var player_1 = document.getElementById("player_1");
player_1.dataset.health;  // "42"

我认为这些值早在IE8就支持了 如果您想要更进一步,那么您可以使用.dataset

而不是使用.setAttribute("data-" + field_name, value)

如果您正在使用jQuery,那么无论如何它都会为您处理所有这些。

因此,对于所有这些选项,为什么每个元素需要2个ID?