Reputation: 207
I have 7 paragraph elements with the class name catalogue-description
that each has a paragraph sibling with the class name redirect-link
.
I am trying to append the redirect link
elements to the catalogue-description
elements. The result should be that for each catalogue-description
, there is one redirect link
element as its child.
However, when I run my code, only 1 of the 7 catalogue-description
will have all 7 redirect link
elements appended to it, instead of one of each.
Here is my code:
HTML:
<p class="catalogue-description">LOREM IPSUM.</p>
<p class="redirect-link">
HELLO
</p>
jQuery:
jQuery(".catalogue-description").each(function(){
jQuery(this).append(jQuery(".redirect link"));
})
Desired Result:
<p class="catalogue-description">
LOREM IPSUM.
<p class="redirect-link">
HELLO
</p>
</p>
<p class="catalogue-description">
LOREM IPSUM.
<p class="redirect-link">
HELLO
</p>
</p>
Upvotes: 0
Views: 45
Reputation: 46
$(".catalogue-description").each(function(){
$(this).append('<p class="redirect-link">HELLO</p>');
})
Upvotes: 0
Reputation: 371213
You need to select the .redirect-link
that's the sibling of the current .catalogue-description
that's being iterated over, else all .redirect-link
s will be selected and appended to the current .catalogue-description
. Use .next()
to get the next sibling:
jQuery(".catalogue-description").each(function(){
const $this = jQuery(this);
$this.append($this.next());
})
jQuery(".catalogue-description").each(function() {
const $this = jQuery(this);
$this.append($this.next());
})
body > p {
border: 1px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="catalogue-description">LOREM IPSUM.</p>
<p class="redirect-link">
HELLO
</p>
<p class="catalogue-description">LOREM IPSUM.</p>
<p class="redirect-link">
HELLO
</p>
Upvotes: 1