使用 jQuery 更改元素的 ID

IT技术 javascript jquery
2021-01-25 16:21:15

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

显然这些不起作用:

jQuery(this).prev("li").attr("id")="newid"
jQuery(this).prev("li")="newid"

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

jQuery(this).prev("li")show(function() {
    this.id="newid";
});

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

(是的,我是 jQuery 新手。)

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

6个回答

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

jQuery(this).prev("li").attr("id","newId");
您是否不需要将元素从 DOM 中分离出来并用一个新元素替换它?为了避免破坏 DOM ......?
2021-03-22 16:21:15
到达这里仔细检查 id 重新分配 - 现在应该.prop( ... )代替.attr( ... )吗?
2021-03-23 16:21:15
jQuery 负责解决这个问题,roosteronacid。
2021-03-27 16:21:15
@Carl 根据最新的 jquery 文档和示例,id仍应使用attr(...)
2021-04-01 16:21:15
我认为 newId 应该用引号引起来
2021-04-04 16:21:15

一个首选选项.attr是这样使用.prop

$(this).prev('li').prop('id', 'newId');

.attr检索元素的属性,同时.prop检索属性引用的属性(即您实际打算修改的内容)

它没有被弃用。从 jQuery 1.6 开始,该.prop()方法提供了一种在检索属性的同时显式检索属性值方法.attr()。”
2021-03-24 16:21:15
这些信息从何而来?api.jquery.com/attr没有说明弃用...
2021-03-27 16:21:15
@Illuminator 我相应地更正了我的答案。谢谢。
2021-04-05 16:21:15

你的意思是:

jQuery(this).prev("li").attr("id", "newID");

这会将 ID 设置为新 ID

我对这个构造做了类似的事情

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});
$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');
此解决方案已在此处提供
2021-03-27 16:21:15
请不要发布纯代码答案 - 始终在答案中为您的代码添加解释。
2021-04-06 16:21:15