2010-06-10 10 views
94

Ich möchte einen Click-Ereignis-Trigger in jQuery für bestimmte Anker-Tags einrichten.jQuery Elemente mit bestimmter Klasse im Selektor ausschließen

Ich möchte bestimmte Links in einem neuen Tab öffnen, während ich die mit einer bestimmten Klasse ignoriere (bevor Sie fragen, kann ich keine Klassen auf die Links setzen, die ich fangen möchte, da sie von einem CMS kommen).

möchte ich Links mit Klasse auszuschließen "button" ODER "generic_link"

ich versucht habe:

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

Aber das scheint nicht zu funktionieren auch, wie kann ich tun, eine OR-Anweisung "generic_link" in den Ausschluss einschließen? diese

Antwort

203

Sie können die .not() Methode verwenden:

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

Alternativ können Sie auch den :not() Selektor:

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

Es gibt kleiner Unterschied zwischen den beiden Ansätze, außer .not() ist besser lesbar (vor allem, wenn verkettet) und :not() ist sehr marginal schneller. Weitere Informationen zu den Unterschieden finden Sie unter this Stack Overflow answer.

+1

So konnte ich tun: $ ("content_box a. ") Nicht (" Button "). Nicht (" generic_link.") Klicken (function (e) ... – Titan

+1

perfekt funktioniert, auch...? bei Verwendung von '.each()'. – cfx

+0

Es scheint ein Fehler bei der Verwendung von '.text()' zu sein - der Text des Elements, das mit say '.not' entfernt wurde, ist immer noch im Text. – Netsi1964

23

Verwendung ..

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

Verwandte Themen