jQuery-beschrijving - end() methode
Voorbeeld
Selecteer alle paragrafen, vind de span-elementen in deze paragrafen en maak ze weer paragrafen, en stel de paragrafen in met een rode rand van twee pixels:
$("p").find("span").end().css("border", "2px red solid");
Definitie en gebruik
De end() methode beëindigt de meest recente filteractie in de huidige keten en herstelt de overeenkomende elementverzameling naar de vorige staat.
Syntaxis
.end()
Uitleg
De meeste jQuery-beschrijvende methoden werken met een jQuery-objectvoorbeeld en genereren een nieuwe objectverzameling die overeenkomt met verschillende DOM-elementen. Als dit gebeurt, moet de nieuwe elementverzameling worden bijgevoegd aan de stack die in het object wordt onderhouden. Elke succesvolle filtermethode-aanroep voegt een nieuw element toe aan de stack. Als we de oude elementverzameling nodig hebben, kunnen we de nieuwe verzameling uit de stack halen met end().
Stel dat er op de pagina een paar korte lijsten zijn:
<ul class="first"> <li class="foo">list item 1</li> <li>list item 2</li> <li class="bar">list item 3</li> </ul> <ul class="second"> <li class="foo">list item 1</li> <li>list item 2</li> <li class="bar">list item 3</li> </ul>
Voorbeeld 1
Het is vooral nuttig om jQuery's kettingeigenschappen (opdrachtketting) te gebruiken, omdat jQuery dan zeer nuttig is. Als je geen opdrachtketting gebruikt, roepen we meestal eerdere objecten aan via variabelenamen, zodat we geen stak hoeven te manipuleren. Maar met end() kunnen we alle methodaanroepen samen voegen:
$('ul.first').find('.foo').css('background-color', 'red') .end().find('.bar').css('background-color', 'green');
Deze opdrachtketting zoekt naar de eerste lijst naar items met de klasse foo en stelt hun achtergrond in op rood. end() keert het object terug naar de staat voordat find() werd aangeroepen, dus de tweede find() zoekt naar '.bar' binnen <ul class="first"> en niet naar <li class="foo">, en stelt de achtergrond van de overeenkomende elementen in op groen. Het uiteindelijke resultaat is dat de items 1 en 3 in de eerste lijst een gekleurde achtergrond krijgen, terwijl er in de tweede lijst geen veranderingen optreden.
Voorbeeld 2
Deze lange jQuery-ketting kan worden weergegeven als een gestructureerde codeblok, de methode om een geneste codeblok te openen, en de end()-methode wordt gebruikt om de codeblokken te sluiten:
$('ul.first').find('.foo') .css('background-color', 'red') .end().find('.bar') .css('background-color', 'green') .end();
Deze end() is niet noodzakelijk, omdat we deze jQuery-object later zullen weggooien. Als je echter code op deze manier schrijft, biedt end() een visuele symmetrie en een nettere programmacode, tenminste voor ontwikkelaars gemakkelijker leesbaar, maar er is een prijskaartje: er is een beetje prestatieverlies omdat er extra aanroepen worden gedaan.