jQuery-besøg - closest() metode
Eksempel
Dette eksempel viser, hvordan man udfører event delegation ved hjælp af closest(). Når den nærmeste listeelement eller et underelement af denne listeelement bliver klikket på, ændres gult baggrund:
$( document ).bind("click", function( e ) { $( e.target ).closest("li").toggleClass("hilight"); });
DefinITION OG BRUG
closest() metoden får den første forælder, der matcher selectoren, fra det aktuelle element og navigerer opad i DOM-træet.
Syntaks
.closest(selector)
Parameter | Beskrivelse |
---|---|
selector | Strengværdi, der indeholder selectorudtrykket for det matchende element. |
Detaljeret forklaring
Hvis der gives en jQuery-objekt, der repræsenterer en DOM-elementkollektion, tillader .closest() metoden os at hente disse elementer og deres forældre i DOM-træet, og opbygge en ny jQuery-objekt med matchende elementer..parents() Ligesom .closest() metoden navigerer de begge opad i DOM-træet. Forskellen er subtil, men vigtig:
.closest() | .parents() |
---|---|
Begynd fra det aktuelle element | Begynd fra forælderelementet |
Naviger opad i DOM-træet, indtil en matchende element er fundet med selectoren. | Naviger opad i DOM-træet, indtil rodelementet findes, og tilføj hver forælderelement til en midlertidig samling; hvis en selector er anvendt, vil denne samling filtreres baseret på selectoren. |
Returnerer en jQuery-objekt, der indeholder ingen eller en element | Returnerer en jQuery-objekt, der indeholder ingen, en eller flere elementer |
Se nedenstående HTML-fragment:
<ul id="one" class="level-1"> <li class="item-i">I</li> <li id="ii" class="item-ii">II <ul class="level-2"> <li class="item-a">A</li> <li class="item-b">B <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </li> <li class="item-c">C</li> </ul> </li> <li class="item-iii">III</li> </ul>
Eksempel 1
Antag, at vi udfører en søgning efter <ul>-elementer fra projekt A:
$('li.item-a').closest('ul').css('background-color', 'red');
Dette vil ændre farven på level-2 <ul>, fordi det er det første element, der mødes, når man traverserer DOM-træet opad.
Eksempel 2
Antag, at vi søger efter <li>-elementer:
$('li.item-a').closest('li').css('background-color', 'red');
Dette vil ændre farven på listeelement A. Før .closest() metoden begynder at traversere DOM-træet, starter den søgningen fra li-elementet selv, indtil det matcher projekt A.
Eksempel 3
Vi kan passere en DOM-element som kontekst, hvor vi søger efter den nærmeste element.
var listItemII = document.getElementById('ii'); $('li.item-a').closest('ul', listItemII).css('background-color', 'red'); $('li.item-a').closest('#one', listItemII).css('background-color', 'green');
Denne kode vil ændre farven på level-2 <ul>, fordi den både er den første <ul>-forælder til listeelement A og arving til listeelement II. Den vil ikke ændre farven på level-1 <ul>, fordi den ikke er arving til listeelement II.