用jQuery改变一个元素ID

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

< p > 编辑 < br > 在这种情况下我不能使用类,我必须使用id
681927 次浏览

我不知道你的目标是什么,但是使用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";
}
});

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

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

如果ID现在更改为#myID123,根据我的经验,上面附加的函数将不再正确工作。

相比.attr,更可取的选项是像这样使用.prop:

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

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

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

这是万能的。只需在body结束标签之前添加,而不要为get添加Jquery.min.js