Domanda Come ottenere i figli dal selettore $ (questo)?


Ho un layout simile a questo:

<div id="..."><img src="..."></div>

e vorrei usare un selettore jQuery per selezionare il bambino img dentro il div al clic.

Prendere il div, Ho questo selettore:

$(this)

Come posso avere il bambino img usando un selettore?


2042
2017-11-20 19:44


origine


risposte:


Il costruttore jQuery accetta un secondo parametro chiamato context che può essere usato per sovrascrivere il contesto della selezione.

jQuery("img", this);

Che è lo stesso dell'utilizzo .find() come questo:

jQuery(this).find("img");

Se le immagini che desideri sono solo discendenti diretti dell'elemento cliccato, puoi anche usare .children():

jQuery(this).children("img");

2687
2017-11-20 21:27



Puoi anche usare

$(this).find('img');

che restituirebbe tutto imgs che sono discendenti di div


444
2017-11-20 21:23



Se hai bisogno di ottenere il primo img è giù esattamente di un livello, puoi farlo

$(this).children("img:first")

127
2017-07-21 18:47



Se il tuo tag DIV è immediatamente seguito dal tag IMG, puoi anche utilizzare:

$(this).next();

71
2018-06-21 13:25



Il diretto i bambini lo sono

$('> .child', this)

56
2017-07-16 20:07



Puoi trovare tutti gli elementi img del genitore div come sotto

$(this).find('img') or $(this).children('img')

Se vuoi un elemento img specifico puoi scrivere in questo modo

$(this).children('img:nth(n)')  
// where n is the child place in parent list start from 0 onwards

Il tuo div contiene solo un elemento img. Quindi per questo qui sotto è giusto

 $(this).find("img").attr("alt")
                  OR
  $(this).children("img").attr("alt")

Ma se il tuo div contiene più img elemento come sotto

<div class="mydiv">
    <img src="test.png" alt="3">
    <img src="test.png" alt="4">
</div>

quindi non puoi usare il codice superiore per trovare il valore alt del secondo elemento img. Quindi puoi provare questo:

 $(this).find("img:last-child").attr("alt")
                   OR
 $(this).children("img:last-child").attr("alt")

Questo esempio mostra un'idea generale di come è possibile trovare l'oggetto reale all'interno dell'oggetto padre. È possibile utilizzare le classi per differenziare l'oggetto figlio. È facile e divertente. cioè

<div class="mydiv">
    <img class='first' src="test.png" alt="3">
    <img class='second' src="test.png" alt="4">
</div>

Puoi farlo come di seguito:

 $(this).find(".first").attr("alt")

e più specifico come:

 $(this).find("img.first").attr("alt")

Puoi usare find o children come sopra. Per maggiori informazioni visita i bambini http://api.jquery.com/children/ e trova http://api.jquery.com/find/. vedi esempio http://jsfiddle.net/lalitjs/Nx8a6/


36
2018-03-22 08:05



Senza conoscere l'ID del DIV penso che potresti selezionare l'IMG in questo modo:

$("#"+$(this).attr("id")+" img:first")

29
2017-11-20 19:56



Prova questo codice:

$(this).children()[0]

27
2017-11-20 19:51