2012-04-19 13 views
14

Jaka jest różnica między tymi dwoma instrukcjami jQuery? Wydaje się, że robią to samo, pobierając wszystkie znaczniki div dzieci.Jaka jest różnica bezpośredniego potomka (>) kontra potomka w selektorach jQuery?

$("#mainblock div") 
$("#mainblock > div") 
+3

Nie zgadzam się z tym pytaniem jest zamknięty jako „zbyt wąskie."Obecnie wszyscy używają jquery i założę się, że większość użytkowników nie może udzielić odpowiedzi na to pytanie. Jak to jest zbyt wąskie/zlokalizowane? – agmin

Odpowiedz

16

$("#mainblock > div") = tylko Childs poziom

$("#mainblock div") = wszystkie Childs + desendents.

+1

Jeśli poszukiwany węzeł jest rodzicem bloku głównego, lepiej użyć> Poza tym, że jest bardziej precyzyjny, jest także szybszy. – Neil

3

Pierwszy z nich dostanie wszystko div s potomka #mainblock. Drugi dostanie wszystkie div s, które są natychmiastowe dzieci #mainblock

1

Pierwszy z nich wybierze dowolny div, który jest dzieckiem `#mainblock” na dowolnym poziomie. Drugi wybierze dowolny div, który jest bezpośrednim dzieckiem.

Zobacz ten link uzyskać więcej informacji na temat CSS > selektor, który zachowuje się tak samo jak w jQuery.

3
$("#mainblock div") 

Ten cel wszystkie DIV wewnątrz „#mainblock” nie ma znaczenia to bezpośredni dzieckiem „#mainblock”, czy dziecko z dzieckiem głównego bloku lub tak dalej.

$("#mainblock > div") 

Spowoduje to skierowanie tylko bezpośrednich potomków DIV z "#mainblock" i zignorowanie innych DIV. Ten jest szybszy niż powyżej, jeśli masz tylko bezpośrednie dziecko. Ponieważ nie jest to próba odnalezienia innych elementów dziecka.

1

$ ("# mainblock div") znaleźć wszystkie DIV pod #mainblock

$ ("# mainblock> div") tylko znaleźć jej dziecko

załóżmy, że masz poniżej struktury HTML:

<div id="mainblock"> 
     <div> 
     <div></div> 
     <div></div> 
     </div> 
    <div></div> 
    <div></div> 
    </div> 

Następnie

$("#mainblock div").length = 5 
$("#mainblock > div").length = 3 
Powiązane problemy