Reputation: 61
I am trying to start with an unordered list of dynamically created items that needs to be broken down into unlimited columns of 10 items per column depending of the amount of content.
<div class="listBox">
<ul class="list">
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
</ul>
I want to use jquery to split it into separate column of 10 for an unlimited amount of columns.
<div class="listBox">
<ul class="list">
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
</ul>
<ul class="list">
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
<li>Data</li>
</ul>
Upvotes: 0
Views: 1638
Reputation: 1042
It doesn't make much sense to me to do this (if the DOM isn't what you want it to be, change the DOM without JS), but maybe I'm missing the bigger picture. To answer your question, you could do something like this:
// Also store list, to be able to efficiently remove it later on
var $items = $('.list > li');
var total = Math.floor($items.length / 10);
for (var i=1, i<=total; i++) {
$items.eq(i*10).after('</ul><ul class="list">');
}
Upvotes: 1