2009-09-23 13 views
18

Busco una forma de seleccionar todos los elementos de una página, excepto aquellos con una ubicación especificada DOM .. Aquí hay un ejemplo de lo que me gustaría hacer:jQuery: ¿Dirigirse a todos excepto a ___?

jQuery('*').except('.ignore').bind('click', function(e) { ... }); 

Es esto posible en una "jQuery nativo" manera?

Respuesta

30

que desea utilizar el selector de :not():

jQuery(":not(.ignore)").bind("click", function(e) { ... }); 
+0

Ah, supongo que el asterisco en mi ejemplo es probablemente redundante. –

+0

Sí lo es - este ejemplo funciona con o sin el asterisco. –

+1

Ahora mirándolo, creo que prefiero sin el asterisco. –

23

Otra manera, si ya tiene selectores para tanto:

$('.foo').not('.ignore').bind(...); 

Además, more filters.

2

Por otro lado, hacer algo para cada elemento en una página simultáneamente es desagradable. Hay una mejor manera. Yo recomendaría vinculantes para el cuerpo después hace clic ignorando en algunos elementos:

$(document.body).click(function(e){ 
    if($target.closest('.ignore').length) return true; 
    ... 
}); 

... O usando jQuery 1.3 de .live(), que lo hace por usted:

$(":not(.ignore)").live(function(e){ 
    ... 
}); 
Cuestiones relacionadas