¿Cómo selecciono un elemento en jQuery usando una variable para el ID?


100

Por ejemplo, lo siguiente selecciona una división con id = "2":

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

¿Cómo hago algo como esto?

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

La sintaxis anterior produce un error. Revisé la documentación de jQuery y las respuestas aquí sin éxito.


6
Vaya, cinco respuestas que son exactamente iguales ...
Zifre

Respuestas:


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

Más importante aún, hacer body.find adicional no tiene ningún impacto en el rendimiento. La forma correcta de hacer esto es simplemente:

row = $('#' + row_id);

46

El camino más corto sería:

$("#" + row_id)

Limitar la búsqueda al cuerpo no tiene ningún beneficio.

Además, debe considerar cambiar el nombre de sus mensajes de correo idelectrónico a algo más significativo (y compatible con HTML según la respuesta de Paolo), especialmente si tiene otro conjunto de datos que también necesita ser nombrado.


Me gusta la concisión. Acabo de usar esto con la información sobre herramientas qTip2, funciona muy bien. Tengo un poco de curiosidad por saber cuál es la penalización del rendimiento por generar muchos de estos "justo a tiempo", como en respuesta a la entrada del usuario.
PJ Brunet

26

Si lo hace $('body').find();, no es necesario cuando se esté buscando por ID; no hay ganancia de rendimiento.

Tenga en cuenta también que tener una identificación que comience con un número no es HTML válido :

Los tokens de ID y NOMBRE deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos de cualquier número de letras, dígitos ([0-9]), guiones ("-"), guiones bajos ("_") , dos puntos (":") y puntos (".").



1

Hay dos problemas con tu código

  1. Para buscar un elemento por ID, debe anteponerlo con un "#"
  2. Está intentando pasar un Número a la función de búsqueda cuando se requiere una Cadena (pasar "#" + 5 solucionaría esto, ya que convertiría el 5 en un "5" primero)

0

No sé mucho sobre jQuery, pero prueba esto:

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

Editar: Por supuesto, si la variable es un número, debe agregar "#"al frente:

row_id = 5
row = $("body").find("#"+row_id);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.