2011-02-14 12 views
37

Necesito encontrar, a través de los selectores jQuery, todos los tramos en una página que no tienen clase.Seleccionar elementos sin ninguna clase

Ejemplo:

<span class='Cool'>do not found me</span> 
<span>me, me, take me please!!!</span> 

Respuesta

59

Uso :not() y la attribute not selector [att!=val] para filtrar elementos con un no vacío class atributo: sin embargo

$('span:not([class!=""])') 

jsFiddle preview

Nota que [att!=val] es un no selector jQuery estándar, lo que significa que el selector no se puede usar en CSS o con document.querySelectorAll(). Si eres como yo, y eres un purista de las siguientes normas y así quiere evitar selectores de jQuery no estándar cuando sea posible, el siguiente es un equivalente directo:

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

Esto coincide con

  • span elementos que tienen sinclass atributo, y
  • span elementos que hacen tienen un atributo class, pero sólo cuando el el valor del atributo está vacío.

En la mayoría de los casos, sin embargo, usted debe ser capaz de salirse con sólo la primera parte:

$('span:not([class])') 

Por lo general, sólo se encuentran vacías class atributos en marcado generado por la aplicación que es responsable de dando salida, o por desarrolladores que no están prestando atención.

+0

Hola Bolclock! ¡No trabajo para mí! Pero en cambio, esto funciona muy bien: span: not ([class]) Gracias por tu sugerencia !!! Lo hice;) – PadovaBoy

+0

@PadovaBoy: ¿Cómo puede mi código no funcionar para usted? '[! =" "]' ha existido desde la primera versión de jQuery. – BoltClock

+0

no lo sé ... simplemente no funciona ... utilizo Firebug con FireFinder con la versión 3.6.13 de FF debajo de la ventana 7 para probar el selector – PadovaBoy

4

Ver esta respuesta hacerlo con CSS solamente Can I write a CSS selector selecting elements NOT having a certain class?

:not([class]) 

En realidad, esto seleccionará bruja nada no tienen un .class aplica a ella.

que se reunieron una demo jsfiddle

html

<h2 class="fake-class">fake-class will be green</h2> 
<h2 class="">empty class SHOULD be white</h2> 
<h2>no class should be red</h2> 
<h2 class="fake-clas2s">fake-class2 SHOULD be white</h2> 
<h2 class="">empty class2 SHOULD be white</h2> 
<h2>no class2 SHOULD be red</h2> 

css

h2 {color:#fff} 
:not([class]) {color:red;background-color:blue} 
.fake-class {color:green} 
+0

OP solicitó los selectores de jquery tho – berbt

+1

@berbt .. que necesita traducir un selector .css a $ ('. Css-selector ')? –

+1

Su solución es aceptable y se usa en la respuesta seleccionada, pero sí, dado que el autor solicitó un contexto de jQuery, hubiera sido bueno dar una respuesta en este contexto al explicar por qué también es válida en css. – emc

Cuestiones relacionadas