J'ai besoin de changer l'ID d'un élément à l'aide de jQuery.
Apparemment, cela ne fonctionne 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 une meilleure façon, non? De plus, s'il n'y en a pas, quelle autre méthode puis-je utiliser au lieu d'afficher / masquer 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 débutant jQuery.)
Edit
Je ne peux pas utiliser de classes dans ce cas, je dois utiliser des identifiants.
javascript
jquery
yoavf
la source
la source
foo = 1
), un membre d'un objet (foo.bar = 2
oufoo['bar'] = 2
) ou un indice de tableau (foo[0] = 3
), mais en l'affectant à une expression, comme le résultat d'un opérateur ((x + b) = 5
) ou le résultat d'un appel de fonction (foo() = 1
,foo(x).bar(y) = 7
) n'a aucun sens, donc ce ne sera certainement pas la façon dont les choses fonctionneront dans jQuery ou dans toute autre bibliothèque JavaScript.Réponses:
Votre syntaxe est incorrecte, vous devez passer la valeur comme deuxième paramètre:
la source
.prop( ... )
au lieu de.attr( ... )
?id
devrait toujours être défini à l'aide deattr(...)
UNE OPTION PRÉFÉRÉE
.attr
est d'utiliser.prop
comme ceci:.attr
récupère l'attribut de l'élément tandis 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)la source
.prop()
méthode fournit un moyen de récupérer explicitement les valeurs des propriétés, tout en.attr()
récupérant les attributs."Ce que vous voulez faire, c'est:
Cela définira l'ID sur le nouvel ID
la source
J'ai fait quelque chose de similaire avec cette construction
la source
Je ne sais pas quel est votre objectif, mais serait-il préférable d'utiliser à la place addClass? Je veux dire qu'un ID d'objets à mon avis devrait être statique et spécifique à cet objet. Si vous essayez simplement de ne pas l'afficher sur la page ou quelque chose comme ça, je mettrais ces détails dans une classe, puis je les ajouterais à l'objet plutôt que d'essayer de changer son ID. Encore une fois, je dis cela sans comprendre votre objectif sous-jacent.
la source
la source
Cela pourrait servir à toutes fins. Ajoutez juste avant votre balise de fermeture de corps et ne faites pas pour ajouter Jquery.min.js
la source
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 sera toujours), mais s'il y a un traitement d'événement javascript ou jQuery attaché à cet ID, il sera essentiellement abandonné :
Si l'ID est maintenant changé en # myID123, la fonction ci-dessus ne fonctionnera plus correctement d'après mon expérience.
la source