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 jQuery et les réponses ici sans succès.

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

Plus important encore, le body.find supplémentaire n’a aucun impact sur les performances. La manière appropriée de le faire est simplement:

 row = $('#' + row_id); 

Le plus court chemin serait:

 $("#" + row_id) 

Limiter la recherche au corps n’a aucun avantage.

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

Doing $('body').find(); n’est pas nécessaire lors de la recherche par identifiant; 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 NAME doivent commencer par une lettre ([A-Za-z]) et peuvent être suivis d’un nombre quelconque de lettres, de chiffres ([0-9]), de tirets (“-“), de traits de soulignement (“_”) , les deux-points (“:”) et les points (“.”).

Vous pouvez le faire comme ceci:

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

Il y a deux problèmes avec votre code

  1. Pour trouver un élément par ID, vous devez le préfixer avec un “#”
  2. Vous essayez de passer un nombre à la fonction find lorsqu’une chaîne est requirejse (le passage de “#” + 5 résoudrait ce problème, car cela convertirait le 5 en “5” en premier)

Je ne connais pas beaucoup jQuery, mais essayez ceci:

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

Edit: Bien sûr, si la variable est un nombre, vous devez append "#" au recto:

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