You may need a more complex script, to loop over each Header element inside your loop. Consider the following.
$(function() {
var myData = [];
$(".xyz").each(function(i, block) {
$(block).children().each(function(j, head) {
myData.push($(head).text());
});
});
console.log(myData);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="xyz">
<h1 class="abc">name1</h1>
<h2 class="abc">16.6164378</h2>
<h3 class="abc">86.74592325165001</h3>
<h4 class="abc">17.971746264000004</h4>
<h5 class="abc">30.706248577159997</h5>
</div>
<div class="xyz ">
<h1 class="abc">name2</h1>
<h2 class="abc">24.777777</h2>
<h3 class="abc">126.7654321</h3>
<h4 class="abc">67.678967969</h4>
<h5 class="abc">90.7689789159997</h5>
</div>
Remember that .each()
is passed an Index and an Element, not a the Value. not to be confused with $.each()
.
This gets the Text Content of each header and pushes it into an Array. This is helpful if you have dynamic content or might not have Classes for each child element.
You can also do this like so, making use of the class on each element.
$(function() {
var myData = [];
$(".abc").each(function(i, head) {
myData.push($(head).text());
});
console.log(myData);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="xyz">
<h1 class="abc">name1</h1>
<h2 class="abc">16.6164378</h2>
<h3 class="abc">86.74592325165001</h3>
<h4 class="abc">17.971746264000004</h4>
<h5 class="abc">30.706248577159997</h5>
</div>
<div class="xyz ">
<h1 class="abc">name2</h1>
<h2 class="abc">24.777777</h2>
<h3 class="abc">126.7654321</h3>
<h4 class="abc">67.678967969</h4>
<h5 class="abc">90.7689789159997</h5>
</div>
Same results.