Reputation: 137
Considering something like this
<div class="wrapper">
<div class="items">Item 1</div>
<div class="items">Item 2</div>
<div class="items">Item 3</div>
<div class="items">Item 4</div>
<div class="items">Item 5</div>
<div class="items">Item 6</div>
</div>
I'm trying to put one DIV if wrapper is > 3 and other if wrapper is > 5
<div class="d1">ADS</div>
<div class="d2">ADS</div>
My code should look like this:
<div class="wrapper">
<div class="items">Item 1</div>
<div class="items">Item 2</div>
<div class="items">Item 3</div>
<div class="d1">ADS</div>
<div class="items">Item 4</div>
<div class="items">Item 5</div>
<div class="d2">ADS</div>
<div class="items">Item 6</div>
</div>
I'm using appendTo() method of jQuery, but think that I can't reach the solution that I want.
$(function() {
var numItems = $('.wrapper').length;
if(numItems > 3) {
$(".d1").appendTo(".wrapper .items");
}
});
Upvotes: 0
Views: 37
Reputation: 140
You can use
$('.d1').insertAfter('.items:nth-child(2n+1)');
If you want to insert a div after every odd items. You can hardcode n to any integer of your requirement. Like to insert after third element, replace n with 1, i.e 2*1 + 1 = 3 equivalent to
$('.d1').insertAfter('.items:nth-child(3)');
Similarly n=2 for 5th element. n=3 for 7th element and so on..
Upvotes: 1
Reputation: 32354
Use nth-child
selector and insertAfter
function
$(".d1").insertAfter('.items:nth-child(3)');
$(".d2").insertAfter('.items:nth-child(6)');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<div class="items">Item 1</div>
<div class="items">Item 2</div>
<div class="items">Item 3</div>
<div class="items">Item 4</div>
<div class="items">Item 5</div>
<div class="items">Item 6</div>
</div>
<div class="d1">ADS</div>
<div class="d2">ADS</div>
Upvotes: 4