2010-06-10 13 views
94

Voglio impostare un trigger di evento click in jQuery per determinati tag di ancoraggio.jQuery esclude elementi con una determinata classe nel selettore

Voglio aprire determinati collegamenti in una nuova scheda ignorando quelli con una certa classe (prima di chiedere non riesco a mettere le classi sui collegamenti che sto cercando di prendere come provengono da un CMS).

voglio escludere legami con classe "button" O "generic_link"

che ho provato:

$(".content_box a[class!=button]").click(function (e) { 
    e.preventDefault();  
    window.open($(this).attr('href')); 
}); 

ma questo non sembra funzionare, anche come faccio a fare una dichiarazione OR includere "generic_link" nell'esclusione?

risposta

203

È possibile utilizzare il metodo .not():

$(".content_box a").not(".button") 

In alternativa, è anche possibile utilizzare il selettore :not():

$(".content_box a:not('.button')") 

C'è piccola differenza tra i due gli approcci, ad eccezione di .not(), sono più leggibili (specialmente se concatenati) e :not() è molto più veloce. Vedi this Stack Overflow answer per maggiori informazioni sulle differenze.

+1

così ho potuto fare: $ ("content_box a. ") Non (" bottone ") non (" generic_link"). Click (function (e) ... – Titan

+1

funzionato alla perfezione, anche...? quando si usa '.each()'. – cfx

+0

Sembra che ci sia un bug quando si usa '.text()' - il testo dell'elemento rimosso usando say '.not' è ancora nel testo. – Netsi1964

23

uso questo ..

$(".content_box a:not('.button')")

Problemi correlati