2013-12-15 10 views
9

Niedawno zacząłem uczyć się jQuery. Biorąc pod uwagę następującą strukturę html, chcę wiedzieć, jaka jest podstawowa różnica między selektorami $('ul>li:eq(2)') i $('ul>li').eq(2).Różnica między ": eq()" i .eq()

<ul> 
    <li>one</li> 
    <li>two</li> 
    <li>three</li> 
    <li>four</li> 
    <li>five</li> 
</ul> 

Odpowiedz

11

Robią to samo, ale jedno jest znacznie wolniejsze: http://jsperf.com/eq-vs-eq

:eq() nie jest pseudo-selektor CSS, który sprawia, że ​​pierwszy selektor selektor jQuery. Dlatego musi zostać przeanalizowany przez bibliotekę selektorów Sizzle, która jest napisana w JavaScript.

Drugi to zwykły selektor CSS i zostanie przekazany bezpośrednio do document.querySelectorAll, który jest implementowany natywnie i będzie działał znacznie szybciej.

1

Zasadniczo nie ma między nimi żadnej różnicy, poza wydajnością. jQuery ma wiele metod, które są równoważne selektorom.

Powiązane problemy