Reputation: 49
I'm trying to append 4 divs at a time (from a list of divs) into a specific divs with class .movehere.
This is what I'm looking for:
<section id="oldsection"></section>
<section id="newsection">
<div></div>
<div></div>
<div class="movehere">
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
</div>
<div></div>
<div></div>
<div class="movehere">
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
</div>
</section>
the original code is
<section id="oldsection">
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div>
<div class="moveme"></div></section>
<section id="newsection">
<div></div>
<div></div>
<div class="movehere">
</div>
<div></div>
<div></div>
<div class="movehere">
</div>
</section>
I can move each of the .moveme divs using .each and .append
$('#oldsection .moveme').each(function () {
#(".movehere").append($(this));
});
I'm not sure how to get the counting to work Perhaps using a counting mechanism...?
Thank you very much!
Upvotes: 0
Views: 66
Reputation: 24965
You can simply target the movehere elements, and move 4 at a time. Once you've moved them all, the selector will find none to move.
$('.movehere').each((_, destination) => {
$('#oldsection .moveme').slice(0, 4).appendTo(destination);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="oldsection">
<div class="moveme">1</div>
<div class="moveme">2</div>
<div class="moveme">3</div>
<div class="moveme">4</div>
<div class="moveme">5</div>
<div class="moveme">6</div>
<div class="moveme">7</div>
</section>
<section id="newsection">
<div></div>
<div></div>
<div class="movehere">
</div>
<div></div>
<div></div>
<div class="movehere">
</div>
<div></div>
<div></div>
<div class="movehere">
</div>
</section>
Upvotes: 1