使用jQuery更改元素的ID

yoa*_*avf 294 javascript jquery

我需要使用jQuery更改元素的ID.

显然这些不起作用:

jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"
Run Code Online (Sandbox Code Playgroud)

我发现我可以使用以下代码实现它:

jQuery(this).prev("li")show(function() {
    this.id="newid";
});
Run Code Online (Sandbox Code Playgroud)

但这对我来说似乎不对.必须有更好的方法,不是吗?此外,如果没有,我可以使用什么其他方法而不是显示/隐藏或其他效果?显然我不想每次都显示/隐藏或影响元素,只是为了改变它的ID.

(是的,我是一个jQuery新手.)

编辑
我不能在这种情况下使用类,我必须使用ID.

Era*_*rin 511

您的语法不正确,您应该将值作为第二个参数传递:

jQuery(this).prev("li").attr("id","newId");
Run Code Online (Sandbox Code Playgroud)

  • jQuery负责,roosteronacid. (15认同)
  • 到达这里双重检查id重新分配 - 现在应该是`.prop(...)`而不是`.attr(...)`? (14认同)
  • 您是否需要从DOM中分离元素并将其替换为具有新ID的新元素?为了避免破坏DOM ...? (5认同)
  • 我认为newId应该在引号中 (3认同)
  • @Carl根据最新的jquery文档和示例,`id`仍应使用`attr(...)`设置 (2认同)

Jer*_*itz 65

首选的选项.attr是使用.prop如下:

$(this).prev('li').prop('id', 'newId');
Run Code Online (Sandbox Code Playgroud)

.attr检索元素的属性,同时.prop检索属性引用的属性(即您实际想要修改的属性)

  • 这些信息来自哪里?http://api.jquery.com/attr/没有提及弃用...... (7认同)
  • .attr已被弃用 - 这是正确的方法. (4认同)
  • 它没有被弃用。“**从 jQuery 1.6 开始,`.prop()` 方法提供了一种显式检索属性值的方法,而 `.attr()` 检索属性。” (3认同)

Pim*_*ger 45

你的意思是:

jQuery(this).prev("li").attr("id", "newID");
Run Code Online (Sandbox Code Playgroud)

这会将ID设置为新ID


小智 10

我用这个结构做了类似的事情

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});
Run Code Online (Sandbox Code Playgroud)


Tim*_*ght 7

我不确定你的目标是什么,但是使用addClass可能会更好吗?我的意思是我认为对象ID应该是静态的并且特定于该对象.如果你只是试图改变它在页面上显示或类似的东西,我会将这些细节放在一个类中,然后将其添加到对象,而不是尝试更改它的ID.再说一次,我说的是不理解你强调的目标.

  • 实际上,如果您通过在HTML中使用隐藏模板构建DOM,然后使用jquery克隆它们,那么设置id是一项非常有用且值得做的事情. (4认同)
  • 传统系统的乐趣 - 我理解你的痛苦.伊兰的回答绝对是最好的. (3认同)

小智 5

$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');
Run Code Online (Sandbox Code Playgroud)