Hoe krijg je de kinderen van de $(this) selector?

Ik heb een indeling die lijkt op deze:

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

en wil graag een jQuery-selector gebruiken om het onderliggende imgbinnen de divbij klikken te selecteren.

Om de divte krijgen, heb ik deze selector:

$(this)

Hoe kan ik het kind imgkrijgen met een selector?


Antwoord 1, autoriteit 100%

De jQuery-constructor accepteert een tweede parameter genaamd contextdie kan worden gebruikt om de context van de selectie te negeren.

jQuery("img", this);

Wat hetzelfde is als het gebruik van .find()als volgt:

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

Als de gewenste imgs alleendirecte afstammelingen zijn van het aangeklikte element, kunt u ook .children():

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

Antwoord 2, autoriteit 16%

Je zou ook kunnen gebruiken

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

die alle img‘s zou retourneren die afstammelingen zijn van de div


Antwoord 3, autoriteit 5%

Als je de eerste imgwilt krijgen die precies één niveau lager is, kun je

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

Antwoord 4, autoriteit 3%

Als uw DIV-tag onmiddellijk wordt gevolgd door de IMG-tag, kunt u ook het volgende gebruiken:

$(this).next();

Antwoord 5, autoriteit 2%

De directekinderen zijn

$('> .child-class', this)

Antwoord 6

Je kunt alle imgelementen van bovenliggende div vinden zoals hieronder

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

Als je een specifiek img-element wilt, kun je zo schrijven

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

Je div bevat slechts één img-element. Dus hiervoor is hieronder goed

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

Maar als uw div meer img-elementen bevat, zoals hieronder

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

dan kun je de bovenste code niet gebruiken om de alt-waarde van het tweede img-element te vinden. Dus je kunt dit proberen:

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

Dit voorbeeld toont een algemeen idee dat hoe u echte objecten in het ouderobject kunt vinden.
U kunt lessen gebruiken om het object van uw kind te differentiëren. Dat is gemakkelijk en leuk. d.w.z.

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

U kunt dit doen zoals hieronder:

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

en specifieker als:

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

U kunt zoeken of kinderen gebruiken als hierboven-code. Voor meer bezoek kinderen http://api.jQuery.com/children/ en vind http://api.jQuery.com/find/ .
Zie voorbeeld http://jsfiddle.net/lalitjs/nx8A6/


Antwoord 7

manieren om naar een kind te verwijzen in jQuery. Ik heb het samengevat in de volgende jQuery:

$(this).find("img"); // any img tag child or grandchild etc...   
$(this).children("img"); //any img tag child that is direct descendant 
$(this).find("img:first") //any img tag first child or first grandchild etc...
$(this).children("img:first") //the first img tag  child that is direct descendant 
$(this).children("img:nth-child(1)") //the img is first direct descendant child
$(this).next(); //the img is first direct descendant child

Antwoord 8

Zonder de ID van de DIV te kennen, denk ik dat je de IMG als volgt kunt selecteren:

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

Antwoord 9

Probeer deze code:

$(this).children()[0]

Antwoord 10

U kunt een van de volgende methoden gebruiken:

1 zoek():

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

2 kinderen():

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

Antwoord 11

jQuery’s eachis één optie:

<div id="test">
    <img src="testing.png"/>
    <img src="testing1.png"/>
</div>
$('#test img').each(function(){
    console.log($(this).attr('src'));
});

Antwoord 12

Je kunt Child Selectorgebruiken om te verwijzen naar de onderliggende elementen die beschikbaar zijn in de bovenliggende sectie.

p>

$(' > img', this).attr("src");

En het onderstaande is als u geen verwijzing naar $(this)heeft en u wilt verwijzen naar imgdie beschikbaar is binnen een divvan een andere functie.

$('#divid > img').attr("src");

Antwoord 13

Dit zou ook moeten werken:

$("#id img")

Antwoord 14

Hier is een functionele code, u kunt deze uitvoeren (het is een eenvoudige demonstratie).

Als je op de DIV klikt, krijg je de afbeelding op verschillende manieren, in deze situatie is “dit” de DIV.

$(document).ready(function() {
  // When you click the DIV, you take it with "this"
  $('#my_div').click(function() {
    console.info('Initializing the tests..');
    console.log('Method #1: '+$(this).children('img'));
    console.log('Method #2: '+$(this).find('img'));
    // Here, i'm selecting the first ocorrence of <IMG>
    console.log('Method #3: '+$(this).find('img:eq(0)'));
  });
});
.the_div{
  background-color: yellow;
  width: 100%;
  height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
  <img src="...">
</div>

Antwoord 15

U heeft mogelijk 0 tot veel <img>-tags in uw <div>.

Gebruik een .find()om een element te vinden.

Gebruik een .each()om je code veilig te houden.

Het samen gebruiken van .find()en .each()voorkomt nulreferentiefouten in het geval van 0 <img>-elementen terwijl maakt het ook mogelijk om meerdere <img>elementen te verwerken.

// Set the click handler on your div
$("body").off("click", "#mydiv").on("click", "#mydiv", function() {
  // Find the image using.find() and .each()
  $(this).find("img").each(function() {
        var img = this;  // "this" is, now, scoped to the image element
        // Do something with the image
        $(this).animate({
          width: ($(this).width() > 100 ? 100 : $(this).width() + 100) + "px"
        }, 500);
  });
});
#mydiv {
  text-align: center;
  vertical-align: middle;
  background-color: #000000;
  cursor: pointer;
  padding: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="mydiv">
  <img src="" width="100" height="100"/>
</div>

Antwoord 16

$(document).ready(function() {
  // When you click the DIV, you take it with "this"
  $('#my_div').click(function() {
    console.info('Initializing the tests..');
    console.log('Method #1: '+$(this).children('img'));
    console.log('Method #2: '+$(this).find('img'));
    // Here, i'm selecting the first ocorrence of <IMG>
    console.log('Method #3: '+$(this).find('img:eq(0)'));
  });
});
.the_div{
  background-color: yellow;
  width: 100%;
  height: 200px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="my_div" class="the_div">
  <img src="...">
</div>

Antwoord 17

Als je img precies het eerste element in div is, probeer dan

$(this.firstChild);

Antwoord 18

Met native javascript die je kunt gebruiken

als je meer dan één afbeeldingstag hebt, gebruik dan

this.querySelectorAll("img")

als er maar één afbeeldingstag is dan wij

this.querySelector("img")


Antwoord 19

Je zou kunnen gebruiken

   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
 $(this).find('img');
</script>

Other episodes