2010-10-16 19 views
7

Estoy usando Jquery para encontrar una clase por variable. Así,Clase de selección Jquery de la variable

var className = "whatever"; 

$ ("# contenedor ul li") si contiene elementos con className, hacen esto

¿Cómo se escribe el código anterior?

¿Es

$("#container ul li").find("."+ className).each(function(){ 
console.log("I found one"); 
}); 

Obviamente el código no funciona

Respuesta

18

¿Está el className en el elemento <li>? Si es así, usted puede hacer esto:

$('#container ul li.' + className)... 

No eres más que la concatenación del className en la cadena de selección (con the class selector).

O esto le dará el mismo resultado.

$('#container ul li').filter('.' + className)... 

Cuál es el similar a la solución de .find(), pero uses .filter() para limitar los elementos encontrados <li> a los que tienen el className.


Si el elemento con el className es un descendiente del elemento <li>, entonces using .find() debería funcionar, o que podría hacer:

$('#container ul li .' + className)... 

... que casi se ve igual que la anterior , pero introduce un espacio después de li, que es a descendant selector.

+0

La solución de filtro funciona. ¡Gracias por aclarar que find() se usa para encontrar descendientes! –

+0

@RisingSun - De nada. : o) – user113716

Cuestiones relacionadas