2011-09-16 10 views
14

Po prostu przechodzę przez kilka tutoriali szkieletowych i mam ogólne pytanie jQuery, które rzeczywiście zastanawiałem się przez chwilę.

Czasami widzę połączenia z drugim parametrem w selektorze jQuery, na przykład $('ul', this.el).

Jaki jest cel tego drugiego parametru w selektorze? I nie mam na myśli w kontekście żadnych szkieletowych przykładów, ogólnie rzecz biorąc, jaki jest cel przekazywania drugiego parametru w selektorze i dlaczego jest on zawsze przekazywany tam? Nie mogę znaleźć żadnej dokumentacji na ten temat.

+0

szukałem tego ... nie mogłem go znaleźć. dziękuję za link, ale – user834418

Odpowiedz

10

Zawęża wyszukiwanie tagu ul w elemencie DOM elementu widoku.

+0

Ah, miło! Myślałem, że to coś takiego, po prostu nie potrafiłem tego wyrazić słowami. Dzięki! – user834418

+1

btw, czy wiesz, czy są jakieś korzyści z wydajności, aby zrobić to w ten sposób zamiast $ (this.el) .find ("ul"); lub $ (this.el + 'ul'); czy jest to w zasadzie to samo? – user834418

14

Sens jest identyczna:

$(this.el).find('ul') 

Wewnętrznie po pęczek testów, jQuery domyśla się, że musi obrócić go wokół powyższej .find() rozmowy, więc to robi, i zaczyna się od nowa.

Podanie kontekstu jako drugiego argumentu jest po prostu wolniejszym sposobem wykonania .find().

Here it is in the source.

// HANDLE: $(expr, context) 
// (which is just equivalent to: $(context).find(expr) 
} else { 
    return this.constructor(context).find(selector); 
} 

... gdzie this.constructor jest funkcja $, context to drugi argument, a selector jest Twój pierwszy argument.