2009-09-23 3 views
18

Sto cercando un modo per selezionare tutti gli elementi di una pagina, ad eccezione di quelli con una posizione DOM specificato .. Ecco un esempio di quello che mi piacerebbe fare:jQuery: target tutti tranne ___?

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

Questo è possibile in un modo "nativo jQuery"?

risposta

30

si desidera utilizzare il selettore :not():

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

Ah, immagino l'asterisco nel mio l'esempio è probabilmente ridondante. –

+0

Sì, questo esempio funziona con o senza l'asterisco. –

+1

Ora guardandolo, penso che preferisco senza l'asterisco. –

8

jQuery not-selector per il salvataggio!

$('*:not(.ignore)').bind('click', function(e) { ... }); 
23

Un altro modo, se si dispone già di selettori per entrambi:

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

Inoltre, more filters.

2

D'altra parte, fare qualcosa a ogni elemento di una pagina simultaneamente è pericoloso. C'è un modo migliore. Suggerirei vincolanti per il corpo poi clic ignorando su alcuni elementi:

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

... O utilizzando jQuery 1.3 di .live(), che fa questo per voi:

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