Mam układ podobny do tego:
<div id="..."><img src="..."></div>
i chciałby użyć selektora jQuery, aby wybrać dziecko img
wewnątrz div
kliknięcia.
Aby uzyskać div
, mam ten selektor:
$(this)
Jak mogę uzyskać dziecko img
za pomocą selektora?
Mam układ podobny do tego:
<div id="..."><img src="..."></div>
i chciałby użyć selektora jQuery, aby wybrać dziecko img
wewnątrz div
kliknięcia.
Aby uzyskać div
, mam ten selektor:
$(this)
Jak mogę uzyskać dziecko img
za pomocą selektora?
Konstruktor jQuery akceptuje drugi parametr o nazwie, context
który można wykorzystać do przesłonięcia kontekstu wyboru.
jQuery("img", this);
To jest to samo, co przy użyciu .find()
takiego:
jQuery(this).find("img");
Jeśli pożądane obrazy są tylko bezpośrednimi potomkami klikniętego elementu, możesz również użyć .children()
:
jQuery(this).children("img");
Możesz także użyć
które zwrócą wszystkie
img
potomkidiv
źródło
$(this).children('img')
byłoby lepiej. np.<div><img src="..." /><div><img src="..." /></div></div>
ponieważ prawdopodobnie użytkownik chce znaleźć obrazy pierwszego poziomu.Jeśli potrzebujesz pierwszego,
img
który spadł dokładnie o jeden poziom, możesz to zrobićźródło
:first
pasuje tylko „ dokładnie o jeden poziom ”, czy też pasuje do „pierwszego”,img
który został znaleziony?.children()
skąd pochodzi „dokładnie jeden poziom” i stąd:first
„pierwszy”..find()
zamiast.children()
this
było już odniesienie do<div>
zawierającego<img>
, jednak jeśli masz wiele poziomów znacznika do przejścia od referencji, którą na pewno posiadasz, to zdecydowanie możesz skomponować więcej niż jednochildren()
wywołanieJeśli zaraz po tagu DIV następuje tag IMG, możesz także użyć:
źródło
Te bezpośrednie dzieci jest
źródło
Możesz znaleźć wszystkie elementy img rodzica div jak poniżej
Jeśli chcesz konkretnego elementu img, możesz napisać w ten sposób
Twoja div zawiera tylko jeden element img. Więc do tego poniżej jest właściwe
Ale jeśli twoja div zawiera więcej elementów img jak poniżej
wtedy nie można użyć górnego kodu, aby znaleźć wartość alt drugiego elementu img. Możesz więc spróbować:
Ten przykład pokazuje ogólną ideę, jak znaleźć rzeczywisty obiekt w obiekcie nadrzędnym. Za pomocą klas można rozróżnić obiekt podrzędny. To łatwe i przyjemne. to znaczy
Możesz to zrobić jak poniżej:
i bardziej szczegółowe, jak:
Możesz użyć find lub child jak powyżej. Więcej informacji można znaleźć na stronie Dzieci http://api.jquery.com/children/ i Znajdź http://api.jquery.com/find/ . Zobacz przykład http://jsfiddle.net/lalitjs/Nx8a6/
źródło
Sposoby odwoływania się do dziecka w jQuery. Podsumowałem to w następującym jQuery:
źródło
Nie znając identyfikatora DIV, myślę, że możesz wybrać IMG w następujący sposób:
źródło
Wypróbuj ten kod:
źródło
$($(this).children()[0])
.$(this:first-child)
$($(this).children()[x])
używać$(this).eq(x)
lub jeśli chcesz pierwszy, po prostu$(this).first()
.Możesz użyć jednej z następujących metod:
1 znaleźć ():
2 dzieci():
źródło
jQuery's
each
jest jedną z opcji:źródło
Za pomocą Selecor podrzędny można odwoływać się do elementów podrzędnych dostępnych w ramach elementu nadrzędnego.
A poniżej jest, jeśli nie masz odniesienia do
$(this)
i chcesz odwoływać sięimg
w ramachdiv
innej funkcji.źródło
Powinno to również działać:
źródło
this
Oto funkcjonalny kod, możesz go uruchomić (to prosta demonstracja).
Kiedy klikniesz DIV, otrzymasz obraz z kilku różnych metod, w tej sytuacji „to” jest DIV.
Mam nadzieję, że to pomoże!
źródło
Możesz mieć od 0 do wielu
<img>
tagów w swoim<div>
.Aby znaleźć element, użyj
.find()
.Aby zabezpieczyć kod, użyj
.each()
.Użycie
.find()
i.each()
razem zapobiega błędom odniesienia zerowym w przypadku 0<img>
elementów, jednocześnie umożliwiając obsługę wielu<img>
elementów.źródło
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
event.stopImmediatePropagation()
na tym elemencie, aby temu zapobiec.źródło
Możesz użyć
źródło
Jeśli twój obraz jest dokładnie pierwszym elementem w div, spróbuj
Pokaż fragment kodu
źródło