关于JavaScript的:使用jQuery更改元素的ID

Changing an element's ID with jQuery

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

显然,这些不起作用:

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

我发现我可以通过以下代码实现它:

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

但我觉得这不太合适。一定有更好的办法,不是吗?另外,如果没有,我可以使用什么其他方法来代替显示/隐藏或其他效果?显然,我不想每次都显示/隐藏或影响元素,只想更改其ID。

(是的,我是jquery的新手。)

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


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

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


.attr相比,使用.prop的首选方案如下:

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

.attr检索元素的属性,而.prop检索属性所引用的属性(即实际要修改的内容)。


你的意思是:

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

这将把ID设置为新的ID


我做了类似的事情

1
2
3
4
5
$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});

我不知道你的目标是什么,但是用addclass代替它更好吗?我的意思是,我认为对象ID应该是静态的,并且特定于该对象。如果你只是想改变它,不让它出现在页面上或者类似的地方,我会把这些细节放到一个类中,然后把它添加到对象中,而不是试图改变它的ID。再说一次,我是说,在不理解你的下划线目标的情况下。


1
$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');


1
2
3
       $(document).ready(function () {
           $('select').attr("id","newId"); //direct descendant of a
       });

这可以做任何用途。只需在结束标记前添加,而不需要get来添加jquery.min.js


埃兰的回答很好,但我会补充一下。您需要观察不与对象内联的任何交互(也就是说,如果onclick事件调用函数,它仍然会调用函数),但是如果该ID附加了一些javascript或jquery事件处理,它将基本上被放弃:

1
$("#myId").on("click", function() {});

如果现在将ID更改为myid123,根据我的经验,上面附加的功能将不再正常工作。