jQuery - wybieranie elementów z wnętrza elementu


95

powiedzmy, że mam taki znacznik:

<div id="foo">
  ...
  <span id="moo">
    ...
  </span>
  ...
</div>

i chcę wybrać #moo.

dlaczego $('#foo').find('span')działa, ale $('span', $('#foo'));nie działa?


10
Dlaczego nie $('#moo')? ;) Przy okazji. to działa: jsfiddle.net/fkling/k5X2r
Felix Kling

Nie wiem dlaczego, ale funkcja, którą podpinam do wybranego zakresu, jest stosowana do wszystkich zakresów na stronie, a nie tylko do tego wewnątrz #foo :(
Alex

2
A co z tym, że masz już wybrany element w zmiennej, więc na przykład zaczniesz od var ele = $("div #foo")tego, jak możesz dostać się stąd do moo (bez korzystania z odniesień do tablic)
Worthy7

Odpowiedzi:


130

Możesz użyć dowolnego z tych [zaczynając od najszybszego]

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo")

Spójrz


1
Myślę, że trzeci powinien być span # moo nie span # foo?
xr280xr

60

Właściwie $ ('# id', this); wybierze #id na dowolnym poziomie potomnym, a nie tylko bezpośrednim dzieckiem. Spróbuj tego zamiast tego:

$(this).children('#id');

lub

$("#foo > #moo")

lub

$("#foo > span")

To niczego nie wybierze, ponieważ element ma identyfikator moo , a nie klasę.
Felix Kling

4
Warto to zauważyć .children()i .find()są podobne, z wyjątkiem tego, że ten pierwszy podróżuje tylko o jeden poziom w dół w poddrzewie DOM.
Kevin

10

Dlaczego nie po prostu użyć:

$("#foo span")

lub

$("#foo > span")

$('span', $('#foo')); działa dobrze na moim komputerze;)


$($(elementA), 'tr#' + key + ' span')nie działa dla mnie (jQuery 1.10.2)
Cody

9

Możesz użyć findopcji, aby wybrać element wewnątrz innego. Na przykład, aby znaleźć element o identyfikatorze txtName w określonym elemencie div, możesz użyć like

var name = $('#div1').find('#txtName').val();

6

Zajrzyj tutaj - aby zapytać o element podrzędny elementu :

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');


3

.... ale $ ('span', $ ('# foo')); nie działa?

Ta metoda jest nazywana dostarczaniem kontekstu selektora .

W tym celu podajesz drugi argument do selektora jQuery . Może to być dowolny ciąg obiektu css, tak jak w przypadku bezpośredniego wybierania lub element jQuery.

na przykład.

$("span",".cont1").css("background", '#F00');

Powyższa linia wybierze wszystkie zakresy w kontenerze o nazwie klasy cont1.

PRÓBNY


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.