109 votes

Comment sélectionner un élément dans jQuery en utilisant une variable pour l'ID?

Par exemple, ce qui suit sélectionne une division avec id = "2":

 row = $("body").find("#2");
 

Comment puis-je faire quelque chose comme ça:

 row_id = 5;
row = $("body").find(row_id);
 

La syntaxe ci-dessus génère une erreur. J'ai vérifié la documentation de jQuery et y répond sans succès.

201voto

Rick Hochstetler Points 1280
 row = $("body").find('#' + row_id);
 

Plus important encore, le complément body.find n'a aucun impact sur les performances. La bonne façon de faire est simplement:

 row = $('#' + row_id);
 

47voto

John Rasch Points 28874

Le plus court chemin serait:

 $("#" + row_id)
 

Limiter la recherche au corps ne présente aucun avantage.

En outre, vous devriez envisager de renommer votre id s en quelque chose de plus significatif (et conforme au HTML selon la réponse de Paolo), en particulier si vous avez également un autre ensemble de données à nommer.

27voto

Paolo Bergantino Points 199336

Faire $('body').find(); n'est pas nécessaire lorsqu'on cherche par ID; il n'y a pas de gain de performance.

Notez également que le fait d'avoir un identifiant commençant par un numéro n'est pas valide HTML :

Les jetons ID et NOM doivent commencer par une lettre ([A-Za-z]) et peuvent être suivis par un nombre quelconque de lettres, chiffres ([0-9]), traits d'union ("-"), traits de soulignement ("_") , les deux points (":") et les points (".").

6voto

Amr ElGarhy Points 12696

Écris-le comme ceci:

 row_id = 5;
row = $("body").find('#'+row_id);
 

0voto

Zifre Points 14109

Je ne connais pas grand chose à jQuery, mais essayez ceci:

 row_id = "#5";
row = $("body").find(row_id);
 

Edit: Bien sûr, si la variable est un nombre, vous devez ajouter "#" au début:

 row_id = 5
row = $("body").find("#"+row_id);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X