Javascript 使用jQuery更改元素的ID

Javascript 使用jQuery更改元素的ID,javascript,jquery,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"; }); 但我觉得这不太对。一定有更好的办法,不是吗?另外,如果没有,我可以使用什么其他方法来代替显示/隐藏或其他效果?显然

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

我不确定您的目标是什么,但使用addClass是否更好?我的意思是,在我看来,对象ID应该是静态的,并且特定于该对象。如果您只是试图更改它在页面上的显示或类似的内容,我会将这些详细信息放入类中,然后将其添加到对象中,而不是尝试更改其ID。同样,我是说,如果不理解您的下划线目标,您的语法不正确,您应该将该值作为第二个参数传递:

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

你的意思是:

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

这将把ID设置为新ID

我对这个构造做了类似的操作

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

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

$("#myId").on("click", function() {});
如果现在将ID更改为myID123,根据我的经验,上面附加的函数将无法正常工作。

首选.attr选项是使用.prop,如下所示:

.attr检索元素的属性,而.prop检索属性引用的属性,即实际要修改的属性

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

这完全可以做到。只需在你的body结束标记之前添加,而不必为get添加Jquery.min.js

$'id-you-want-to-change'.attr'id','id your-want-to-change'

遗留系统的乐趣——我理解你的痛苦。Eran的答案肯定是最好的。如果您正在使用HTML中的隐藏模板构建DOM,然后使用jquery克隆它们,那么设置id是一件非常有用和值得做的事情。我认为newId应该在引号中。您不需要将元素从DOM中分离出来,并用一个新的元素替换它吗位置为了避免破坏DOM…?jQuery会处理这个问题,roosteronacid.arrived在这里重复检查id重新分配-现在应该是。prop。。。而不是.attr@Carl根据最新的jquery文档和示例,id仍然应该使用attr设置……在JavaScript中,您可以分配给变量foo=1、对象foo.bar=2或foo['bar]=2或数组下标foo[0]=3的成员,但分配给表达式,如运算符x+b=5的结果或函数调用foo=1的结果,foox.bary=7没有任何意义,因此它肯定不是jQuery或任何其他JavaScript库中的工作方式。.attr已被弃用-这是正确的方法。这些信息来自哪里?没有提到弃用……它不是弃用的。从jQuery 1.6开始,.prop方法提供了一种显式检索属性值的方法,.attr检索属性。@Illuminator我相应地更正了我的答案。谢谢。此解决方案已经提供。请不要只发布代码答案-始终在答案中添加代码解释。
<script>
       $(document).ready(function () {
           $('select').attr("id", "newId"); //direct descendant of a
       });
</script>
$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');