Reputation: 964
I am trying to grab the first 4 elements from inside a parent div. When using slice, it instead returns all the children elements inside my div.
My jQuery:
var upperText = jQuery(".entry-text").slice(0,4).html();
The HTML
<div class="entry-text">
<h1>Lorem ipsum dolor sit amet consectetuer adipiscing
elit</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Aenean commodo ligula eget dolor. Aenean massa
<strong>strong</strong>. Cum sociis natoque penatibus
et magnis dis parturient montes, nascetur ridiculus
mus.</p>
<h1>Lorem ipsum dolor sit amet consectetuer adipiscing
elit</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Aenean commodo ligula eget dolor. Aenean massa.
</p>
<h2>Aenean commodo ligula eget dolor aenean massa</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Aenean commodo ligula eget dolor. Aenean massa.
Cum sociis natoque penatibus et magnis dis parturient
montes, nascetur ridiculus mus. Donec quam felis,
ultricies nec, pellentesque eu, pretium quis, sem.</p>
</div>
For example, in the HTML sample above, I just want everything through the second paragraph tag.
Upvotes: 0
Views: 40
Reputation: 207501
Your code is filtering the elements you selected, it has nothing to do with the children. If you want the HTML, the easiest thing to do is clone the element and removing the elements you do not want.
const html = $(".entry-text").clone().find("> *:gt(3)").remove().end().html();
console.log(html);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="entry-text">
<h1>Lorem ipsum dolor sit amet consectetuer adipiscing elit
</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
<strong>strong</strong>. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p>
<h1>Lorem ipsum dolor sit amet consectetuer adipiscing elit
</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.
</p>
<h2>Aenean commodo ligula eget dolor aenean massa</h2>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium
quis, sem.</p>
</div>
Upvotes: 1
Reputation: 166
I believe .entry-text.children() will return an element's children
var upperText = $(".entry-text").children().slice(0, 4);
Upvotes: 0