首页 文章

使用jQuery更改元素的ID

提问于
浏览
264

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

Edit
在这种情况下我不能使用类,我必须使用ID .

9 回答

  • 42

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

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

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

  • 474

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

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

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

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

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

  • 0

    你的意思是:

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

    这会将ID设置为新ID

  • 0

    如果你想改变旧的id,那么现在在示例中显示

    <label id="myOldId">Change id....</label>
    

    并使用java-script进行查找

    <script type="text/javascript" src="jQuery-1.7.2.js"></script> 
    
    <script>
    $(document).ready(function() {
    
        $('#myOldId').attr('id', 'newID');
    
        });
    </script>
    
  • 1
    $("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');
    
  • 5

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

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

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

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

    这可以用于所有目的 . 只需在你的身体结束标记之前添加,不要添加 Jquery.min.js

相关问题