2012-01-28 9 views
10

¿Cómo puedo usar jQuery para seleccionar un elemento solo si no tiene ninguna clase?jQuery: seleccione un elemento solo cuando no tenga nombre de clase

Estoy escribiendo una página que permite al autor html anular la acción jQuery predeterminada agregando una clase al elemento. Debe ser cualquier clase en absoluto.

lo tanto, el margen de beneficio podría ser:

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

me gustaría jQuery sólo para seleccionar el segundo elemento de la lista, ya que no tiene una clase.

Miré .hasClass(), pero parece requerir un nombre de clase específico.

Gracias!

Respuesta

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

¡Perfecto! Esto hizo exactamente lo que yo quería. –

+0

Me alegra ayudar. Puede aceptar mi respuesta haciendo clic en el botón de la izquierda si es la verdadera respuesta a su pregunta :) –

2

Esto debería hacer la cosa: $('li').not('li[class]')

+1

Su segundo selector de tipo 'li' es redundante. –

+0

Es cierto. Y mi solución también es más lenta que las otras xD. Al menos aprendí algo nuevo hoy – clime

+0

De alguna manera creo que el selector único con el atributo: not se ejecutará más rápido que este. Leí en alguna parte que: no fue mucho más rápido que .no - Supongo que la solución .no debe atravesar el DOM dos veces. –

8

Esto debe hacerlo:

$('li:not([class]),li[class=""]') 

Demostración: http://jsfiddle.net/aMC5X/

La primera parte, li:not([class]) utiliza el "not selector" Wisconsin el "has attribute" para encontrar cualquier li elementos que no tengan el atributo class en absoluto.

La segunda parte, li[class=""] encuentra elementos li que tienen el atributo establecido en una cadena vacía.

+0

Interesante. El segundo elemento es incluir en el conjunto "sin clase" aquellos con un nombre de clase vacío? Esa es probablemente una buena idea, nunca se sabe. –

+0

Bueno, si juegas con el jsfiddle que te di, puedes ver qué pasa con y sin la segunda parte y decidir si lo necesitas en tu situación (en mi opinión lo necesitas). – nnnnnn

1

Puede utilizar este:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
} 
Cuestiones relacionadas