使用jQuery更改元素的ID

时间:2008-12-07 17:26:27

标签: javascript jquery

我需要使用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。

9 个答案:

答案 0 :(得分:492)

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

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

答案 1 :(得分:55)

.attr以上的优先选项是使用.prop,如下所示:

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

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

答案 2 :(得分:43)

你的意思是:

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

这会将ID设置为新ID

答案 3 :(得分:10)

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

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});

答案 4 :(得分:7)

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

答案 5 :(得分:3)

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

答案 6 :(得分:0)

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

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

如果现在ID已更改为#myID123,则根据我的经验,上面附加的功能将无法正常运行。

答案 7 :(得分:0)

<script>
       $(document).ready(function () {
           $('select').attr("id", "newId"); //direct descendant of a
       });
</script>

这可以用于所有目的。只需在您的正文结束标记之前添加,而不是添加 Jquery.min.js

答案 8 :(得分:0)

$('#id-you-want-to-change').attr('id', 'id-you-want-it-to-be');