/ / Zmätenie reťazenia [uzavreté] - jQuery, reťazenie

Chaining zmätok [uzavretý] - jquery, reťazenie

Povedzme, že mám tento kód HTML:

<div id="div_box">
<ul>
<li class="li1"></li>
<li class="li2"></li>
<li class="li3"></li>
</ul>
</div>

A chcem odstrániť triedu "li1".

Vyskúšal som to s jQuery:

$("#div_box").find(".li1").removeClass("li1");

Funguje to, ale nechápem, prečo to funguje. Pri reťazení sa metóda vzťahuje iba na daný selektor. #div_box nemá triedu s názvom "li1", takže by to nemalo fungovať.

Chápem, ako funguje reťazenie? Mohol by niekto objasniť, prečo to funguje?

odpovede:

0 pre odpoveď č. 1

Na .Nájsť() metóda vráti všetkých potomkov #div_box ktorý má triedu li1...

Nie všetky jQuery metódy vracajú rovnakú množinu objektov, na ktoré boli povolané ... väčšinou prechádzanie stromom metódy vracajú inú množinu objektov


0 pre odpoveď č. 2

Reťazovanie bude ukazovať na object ktorý je evaluated nedávno, Vo vašom prípade nedávno hodnotené object je výsledok .find(".li1"), Ak to chcete pridať #div_box do selektora, potom musíte použiť .addBack() vo vašom súčasnom kontexte.


0 pre odpoveď č. 3

je to dobre vysvetlené v dokumentácii ... http://api.jquery.com/find/

na .find() metóda nám umožňuje hľadať medzi potomkami tieto prvky v strome DOM a postaviť nový objekt jQuery z zodpovedajúce prvky.

Prvý podpis pre.find () metóda prijíma selektor výraz rovnakého typu, ktorý môžeme odovzdať funkcii $ (). prvky budú filtrované testovaním, či sa zhodujú s týmto selektorom.

so zámerom prejsť k prvkom

Na rozdiel od ostatných metód stromového posuvu,selektor vo výzve na .find () sa vyžaduje výraz. Ak potrebujeme získať späť všetky potomkové prvky, môžeme prejsť univerzálnym selektorom "*" na dosiahnutie tohto cieľa.