2012-04-18 9 views
34

Quiero hacer algo con var p:Cómo escribir el selector jQuery "si no es de clase"?

var p = $("li:last"); 

Pero no quiero hacer nada si hay una cierta clase anexa. Lo intenté: no así:

var p = $("li:last:not(.Class)"); 

Esto no funciona. ¿Cómo puedo excluir .Class en mi var?

+2

Sólo para aclarar el ': no 'selector y' .not' se supone que se comportan igual. Es decir, 'var p = $ (" li: last "). Not (". Class ");' y 'var p = $ ('li: last: not (.Class)')' Debería funcionar de la misma manera. >> Vea su código trabajando http://jsfiddle.net/skram/76NNp/ << –

Respuesta

48
var p = $("li:last").not(".Class"); 

http://api.jquery.com/not/

+4

': no (.Class)' debería hacer lo mismo, ¿no? –

+0

Gracias, eso funcionó :) – Youss

+1

@Vega ya que OP también está usando ': last', puede haber cierta confusión en el motor sobre cuál se aplica primero. – Blazemonger

13

En realidad :not hace el trabajo como un selector.

Si desea seleccionar el último elemento que no tiene la clase, utilice este

var p = $("li:not(.Class):last"); 

Esto selecciona los primeros li s que no tienen esa clase, y luego el último de ellos. See it working here.

dejar perfectamente claro, estos son equivalentes:

var p = $("li:not(.Class):last"); 
var p = $("li").not(".Class").last(); 

Y, también, estos son equivalentes:

var p = $("li:last:not(.Class)"); 
var p = $("li").last().not(".Class"); 
+1

OP parece querer seleccionar el último elemento SÓLO SI no es '.Class', y si lo es, seleccione nada. Al menos así es como lo leí. – Blazemonger

+0

@ mblase75 Eso es correcto – Youss

+1

Agregué algunas explicaciones adicionales para hacer que lo que está sucediendo en el código sea un poco más claro. – cambraca

2
var p = $("li:last"); 
if (!p.hasClass('Class')){ 
//some stuff 
} 

http://api.jquery.com/hasClass/

+0

Este es el que funcionó para mí. Particularmente útil ya que el elemento tenía más de una clase. –

Cuestiones relacionadas