2010-11-12 15 views

Respuesta

54

Pruebe esto. Para más información lea jquery selectors

$('*[class^="text"]') 
+7

El atributo de clase toma una lista de espacios separados de clases; esto fallará en 'class =" foo text-1 bar "' – Quentin

+8

Entonces podemos usar $ ('* [class * = "text"]'). esto buscará texto como subcadena en el atributo de clase. Ref: http://api.jquery.com/attribute-contains-selector/ –

+5

@Chinmayee Que coincidirá erróneamente con algo como 'sometext' – Phil

-4
$('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){ 

     $(this).addClass('qvHover');                    

    }); 

ejemplo de uno de mis projects.you pueden mencionar los dos divs y clases juntos como anteriormente

puede proporcionar como clase o divs coma separados en la misma ...

+0

He dado el ejemplo de arriba si quieres dar varias clases o identificadores juntos cuando no hay un patrón – kobe

+0

que está mal con el código anterior, no mencionó que quiere un patrón correcto – kobe

0

Aquí es una función que se ocupa de la cuestión de las múltiples clases, en casos como <div class="foo bar barfood">:

function classStartsWith(str) { 
    return $('div').map(function(i,e) { 
    var classes = e.className.split(' '); 
    for (var i=0, j=classes.length; i < j; i++) { 
     if (classes[i].substr(0, str.length) == str) return e; 
    } 
    }).get(); 
} 

La función devuelve una matriz de hacer coincidir los elementos DOM. Se puede utilizar de este modo:

$(classStartsWith('text-')).doSomething(); 

He aquí un ejemplo: http://www.jsfiddle.net/Ms6ey/3/

Por supuesto, esto supone que el selector 'div'. La pregunta parece estar preguntando sobre cualquier elemento en absoluto. Es bastante fácil hacer que la función tome un selector como otro argumento, y usar eso en lugar del codificado en el ejemplo.

2

Usted no necesariamente tiene que especificar asterisco *, se puede hacer esto también:

$('[class^="text-"]') 

Aviso la adición de - después text algo que busca.

Consulte jQuery starts with selector para obtener más información.

13

He aquí un intento de solución que a la vez precisa y no demasiado lento:

var elts = $('*[class*="text-"]') 
    .filter(function() { 
    return this.className.match(/(?:^|\s)text-/); 
    }); 

que funciona mediante el uso de la (esperemos) rápido código chisporroteo de encontrar elementos que tienen "texto:" en cualquier lugar en su atributo class , y luego llama a una función en cada uno de ellos para filtrarlos a los que realmente tienen "texto" al comienzo de un nombre de clase.

+0

+1 Respuesta correcta. Además, es más rápido que la solución que tuve, que utilizó jQuery para obtener los nombres de las clases. Buen trabajo. –

+0

¡Esta es la respuesta correcta! – Ejaz

Cuestiones relacionadas