javascript - Inte klassväljare i jQuery


Finns det ett enkelt selektorexpression för att inte välja element med en specifik klass?

<div class="first-foo" />
<div class="first-moo" />
<div class="first-koo" />
<div class="first-bar second-foo" />

Jag vill bara få de första tre divarna och försökte

$(div[class^="first-"][class!="first-bar"])

Men detta tar emot allt eftersom den sista div:en innehåller mer än first-bar. Finns det ett sätt att använda en platshållare i ett sådant uttryck? Något åt det hållet

$(div[class^="first-"][class!="first-bar*"]) // doesn't seem to work

Finns det några andra selektorer som kan vara till hjälp?

Svar #1

Du behöver :not()-väljaren:

$('div[class^="first-"]:not(.first-bar)')

eller, alternativt, .not()-metoden:

$('div[class^="first-"]').not('.first-bar');

Svar #2

Du kan använda :not-filterväljaren:

$('foo:not(".someClass")')

Eller not()-metod:

$('foo').not(".someClass")

Mer information:

  • http://api.jquery.com/not-selector/
  • http://api.jquery.com/not/

Relaterade artiklar