2013-06-06 7 views
6

Używam kodu takiego jak $('.elem',elem), $('.elem',elem).tabs().

służy do wybierania elementów z tą klasą.

Ale co dalej po przecinku? Jaki jest tego pożytek?

+2

Jest to [selektor kontekst] (http: // api.jquery.com/jQuery/#jQuery1), odpowiednik '$ (elem) .find ('. elem');' – billyonecan

+0

Używam jQuery od prawie 2 lat b ut nie zwracał na to zbytniej uwagi. :) +1 –

Odpowiedz

11

$('.elem',elem) jest $(elem).find('.elem'). W rzeczywistości to właśnie robi z nią jQuery pod okładkami. Znajduje wszystkie elementy z klasą "elem", które są potomkami elementu elem. To jest objęte . Warto poświęcić godzinę na przeczytanie tego od początku do końca. Istnieje wiele przydatnych rzeczy, które nie są dobrze znane. :-) (Nie mówię, że to jedna z nich [ja sam nie jestem jej fanem, niektórzy są], tylko że ogólnie jest tam wiele użytecznych rzeczy.)

+0

wydaje się, że nie ma żadnej korzyści, aby użyć kontekstu ponad find(), czy to prawda? –

+4

@roasted: Racja. * Cóż *, przypuszczam, że niektórzy zwracają uwagę, że jest to mniej znaków. :-) Ale kiedy mówię "to właśnie robi z nią jQuery pod kołdrą" mam na myśli dokładnie to: Dosłownie wykrywa, że ​​zrobiłeś '$ ('. Elem', elem)' i przechodzi do '$ (elem) .find ('. elem') '. Zatem '$ ('. Elem', elem)' forma dodaje tylko inne wywołanie funkcji (nie to, że naprawdę ma znaczenie). –

4

To jest kontekst, w którym wyszukiwanie jest wykonywane.

To samo niż

$(elem).find('.elem') 

Zobacz documentation here

0

Drugi parametr przekazywane do funkcji jQuery definiuje zakres lub kontekst pierwszego selektora.

Mówi jQuery, aby znaleźć wszystkie elementy o klasie elem w elemencie dostarczonym w drugim parametrze. Elementy z klasą .elem poza elem nie zostaną wybrane.

Biorąc pod uwagę następujące HTML:

<div id="included"> 
    <input/> 
    <input/> 
</div> 
<div id="excluded"> 
    <input/> 
    <input/> 
</div> 

te selektory następujący wynik:

console.log($("input", "#included").length); //2 only those inside included 
console.log($("input").length); //4 all inputs 

przykład roboczych:http://jsfiddle.net/LE6eE/

+0

Użyłem selektora z metodą .find(). ale $ (". elem", elem) działa dobrze niż .find(). Czy metoda find() jest przydatna, czy nie? – Natesan

+0

Nie jestem pewien, czy specyfikacja kontekstu nie może tego zrobić. Myślę, że 'find' jest nieco bardziej intuicyjny i łatwiejszy do odczytania. –

Powiązane problemy