Hoe manipuleer ik een bestaande verzameling in jQuery?

Ik heb een variabele met daarin een jQuery-verzameling, zoals deze:

$collection = $(".example");

Dit geeft me een aantal knooppunten met de klasse "voorbeeld".

Nu wil ik die verzameling manipuleren en de resultaten behouden, waarvan ik dacht dat die zo zouden werken:

$(".example", $collection).filter(":even").addClass("even");

Helaas lijkt dat niet te werken. Elke keer als ik er een opdracht aan toevoeg, zoals deze:

$collection = $(".example", $collection).filter(":even").addClass("even");

Ik krijg een lege verzameling.

Het eindresultaat dat ik wil is om alle .example-klassen even items in de collectiecollectie $ te hebben om de klasse "even" te hebben. Ik wil de inhoud van de $ collectie niet vervangen door alleen de even .example-elementen.

1
Bijgewerkte OP met meer informatie over wat ik probeer te bereiken
toegevoegd de auteur evanmcd, de bron
Wat probeer je te bereiken?
toegevoegd de auteur slash197, de bron

3 antwoord

Proberen:

$collection.filter(":even").addClass("even");
or
$(".example").filter(":even").addClass("even");

Wanneer u $ collection = $ (". Example"); definieerde wat u deed met
$ (".voorbeeld", $ verzameling) zocht naar items met de voorbeeldklasse binnen items met de voorbeeldklasse.

Beter nog:

$(".example:even").addClass("even");

... zou nog minder direct zijn.

Bijwerken:

$collection.filter(":even").addClass("even");

Als u dit doet, wordt de variabele $ collection niet overschreven.

3
toegevoegd
OK, misschien was ik niet duidelijk in het OP. $ collection bevat een aantal knooppunten met de klasse "example". Ik wil nu alleen die knooppunten manipuleren, terwijl ik de verzameling in de variabele houd. als ik filter, verwijder ik uiteindelijk de knooppunten die niet overeenkomen met het filter, en dat is niet wat ik wil.
toegevoegd de auteur evanmcd, de bron
OK, dat is logisch. Heel erg bedankt!
toegevoegd de auteur evanmcd, de bron
1. En voor de OP: gebruik $ collection = $ collection.filter (": even"). AddClass ("even") als het de bedoeling is om de variabele $ collection bij te werken om alleen de even elementen vast te houden.
toegevoegd de auteur nnnnnn, de bron
@evanmcd Zie de update.
toegevoegd de auteur iambriansreed, de bron

$(".example", $collection) selects elements with class .example which are inside $collection node. Try use only $(".example").

0
toegevoegd

Als u eenvoudig de klasse even wilt toevoegen aan even elementen in uw html, kunt u dit gebruiken

$('.example:even').addClass('even');
0
toegevoegd