I am creating a tab content pagination. What I need here is I need to show and hide divs' according to the selected paginate item value. I need to show 3 divs in the content at a time. User can use pagination to paginate the other contents in the current tab.
I tried using slice
and lt
. When I going forward it is working fine. But I don't know how can I get those back when I reverse.
<div role="tabpanel" class="active" id="tab1">
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
<div class="foo">Contents going here</div>
</div>
<div class="tab" id="tab2"></div
<div class="tab" id="tab3"></div>
<ul class="pagination">
<li class="active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
<li><a href="#">7</a></li>
</ul>
$('.foo').filter(':lt(' + sItems + '),:gt(' + sTo + ')').fadeOut(300);
I am passing sItems
and sTo
as variable values.
What I need is show divs' which is in between sItems
and sTo
. It can be 1 to 3, 4 to 6 etc, according to the pagination value selected.
Here is a Working JsFiddle , And the code is as below
$(function() {
$('div.foo').hide(); //initially hide all the div's on page load.
$.each($('div.tab'), function() {
var $currTab = $(this);
//create Li tags dynamically
var totalListToBuild = ($currTab.find('div.foo').length) / 3;
for (var i = 0; i < totalListToBuild; i++) {
$currTab.find('ul.pagination').append('<li><a href="#">' + (i + 1) + '</a></li>');
}
$currTab.find('.pagination li a').on('click', function(e) { // bind events
e.preventDefault();
var currIndex = $(this).text();
$currTab.find('div.foo').hide();
var start = (currIndex * 3) - 3;
var end = (currIndex * 3);
$currTab.find(".foo").slice(start, end).show();
});
$currTab.find('.pagination li a:eq(0)').trigger('click'); //trigger first page click
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div role="tabpanel" class="tab active" id="tab1">
<div class="foo">Contents going here 1</div>
<div class="foo">Contents going here 2</div>
<div class="foo">Contents going here 3</div>
<div class="foo">Contents going here 4</div>
<div class="foo">Contents going here 5</div>
<div class="foo">Contents going here 6</div>
<div class="foo">Contents going here 7</div>
<div class="foo">Contents going here 8</div>
<div class="foo">Contents going here 9</div>
<div class="foo">Contents going here 10</div>
<div class="foo">Contents going here 11</div>
<div class="foo">Contents going here 12</div>
<div class="foo">Contents going here 13</div>
<div class="foo">Contents going here 14</div>
<div class="foo">Contents going here 15</div>
<div class="foo">Contents going here 16</div>
<div class="foo">Contents going here 17</div>
<div class="foo">Contents going here 18</div>
<div class="foo">Contents going here 19</div>
<div class="foo">Contents going here 20</div>
<div class="foo">Contents going here 21</div>
<ul class="pagination">
</ul>
</div>
<div class="tab" id="tab2">
<div class="foo">Contents going here 1</div>
<div class="foo">Contents going here 2</div>
<div class="foo">Contents going here 3</div>
<div class="foo">Contents going here 4</div>
<div class="foo">Contents going here 5</div>
<div class="foo">Contents going here 6</div>
<div class="foo">Contents going here 7</div>
<div class="foo">Contents going here 8</div>
<div class="foo">Contents going here 9</div>
<div class="foo">Contents going here 10</div>
<div class="foo">Contents going here 11</div>
<div class="foo">Contents going here 12</div>
<div class="foo">Contents going here 13</div>
<div class="foo">Contents going here 14</div>
<div class="foo">Contents going here 15</div>
<div class="foo">Contents going here 16</div>
<div class="foo">Contents going here 17</div>
<div class="foo">Contents going here 18</div>
<div class="foo">Contents going here 19</div>
<div class="foo">Contents going here 20</div>
<div class="foo">Contents going here 21</div>
<ul class="pagination">
</ul>
</div>
<div class="tab" id="tab3">
<div class="foo">Contents going here 1</div>
<div class="foo">Contents going here 2</div>
<div class="foo">Contents going here 3</div>
<div class="foo">Contents going here 4</div>
<div class="foo">Contents going here 5</div>
<div class="foo">Contents going here 6</div>
<div class="foo">Contents going here 7</div>
<div class="foo">Contents going here 8</div>
<div class="foo">Contents going here 9</div>
<div class="foo">Contents going here 10</div>
<div class="foo">Contents going here 11</div>
<div class="foo">Contents going here 12</div>
<div class="foo">Contents going here 13</div>
<div class="foo">Contents going here 14</div>
<div class="foo">Contents going here 15</div>
<div class="foo">Contents going here 16</div>
<div class="foo">Contents going here 17</div>
<div class="foo">Contents going here 18</div>
<div class="foo">Contents going here 19</div>
<div class="foo">Contents going here 20</div>
<div class="foo">Contents going here 21</div>
<ul class="pagination">
</ul>
</div>