Modification de L'ID d'un élément avec jQuery

J'ai besoin de changer L'ID d'un élément en utilisant jQuery.

Apparemment, ceux-ci ne fonctionnent pas:

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

J'ai découvert que je peux y arriver avec le code suivant:

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

Mais cela ne me semble pas juste. Il doit y avoir un meilleur moyen, non? En outre, dans le cas où il n'y en a pas, quelle autre méthode puis-je utiliser à la place de show/hide ou d'autres effets? Évidemment, je ne veux pas afficher / masquer ou affecter l'élément à chaque fois, juste pour changer son ID.

(Oui, je suis un jQuery novice.)

Modifier
Je ne peux pas utiliser de classes dans ce cas, je dois utiliser des ID.

260
demandé sur Pops 2008-12-07 20:26:26

9 réponses

Votre syntaxe est incorrecte, vous devez passer la valeur comme deuxième paramètre:

jQuery(this).prev("li").attr("id","newId");
468
répondu Eran Galperin 2011-04-26 02:24:12

Une OPTION préférée à {[1] } est d'utiliser .prop comme ceci:

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

.attr récupère l'attribut de l'élément alors que .prop récupère la propriété référencée par l'attribut (c'est-à-dire ce que vous avez réellement l'intention de modifier)

44
répondu Jeremy Moritz 2016-06-07 18:34:54

Ce que vous voulez dire est:

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

Qui définira L'ID sur le nouvel ID

42
répondu Pim Jager 2008-12-07 17:40:17

J'ai fait quelque chose de similaire avec cette construction

$('li').each(function(){
  if(this.id){
    this.id = this.id+"something";
  }
});
8
répondu Petr Safar 2013-05-14 23:56:27

Je ne suis pas sûr de votre objectif, mais pourrait-il être préférable d'utiliser addClass à la place? Je veux dire QU'un ID d'objets à mon avis devrait être statique et spécifique à cet objet. Si vous essayez juste de le modifier à partir de l'affichage sur la page ou quelque chose comme ça je mettrais ces détails dans une classe, puis l'ajouter à l'objet plutôt que d'essayer de changer son ID. Encore une fois, je dis cela sans comprendre votre objectif de soulignement.

6
répondu Tim Knight 2008-12-07 17:31:42

Si vous voulez changer l'ancien id alors maintenant afficher dans l'exemple

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

Et chage en utilisant java-script

<script type="text/javascript" src="jQuery-1.7.2.js"></script> 

<script>
$(document).ready(function() {

    $('#myOldId').attr('id', 'newID');

    });
</script>
5
répondu pradip kor 2017-05-31 04:51:42
$("#LeNomDeMaBaliseID").prop('id', 'LeNouveauNomDeMaBaliseID');
1
répondu Sébastien 2016-05-26 14:35:02

La réponse D'Eran est bonne, mais j'ajouterais à cela. Vous devez surveiller toute interactivité qui n'est pas en ligne avec l'objet (c'est-à-dire si un événement onclick appelle une fonction, il le fera toujours), mais s'il y a une gestion des événements javascript ou jQuery attachée à cet ID, il sera fondamentalement abandonné:

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

Si l'ID est maintenant changé en # myID123, la fonction ci-dessus ne fonctionnera plus correctement d'après mon expérience.

0
répondu rfornal 2014-05-08 20:27:42
<script>
       $(document).ready(function () {
           $('select').attr("id", "newId"); //direct descendant of a
       });
</script>

Cela pourrait faire tout usage. Il suffit d'ajouter avant votre balise de fermeture du corps et de ne pas ajouter Jquery.min.js

0
répondu Prassanna D Manikandan 2015-09-23 16:59:38