I'm using jQuery Isotope for my pagination functionality. Does anyone know if this sort of thing is built into jquery-isotope? I read the documentation but couldn't find anything.
I got the pages working with no issues, but currently, the next and prev are not functioning as intended and are showing all 6 divs.
I'm currently trying to make the prev and next buttons work in the sense that they will flow to the appropriate (opposite) page when clicked, and works dynamically. I have attempted to achieve this functionality in jQuery under // attempt at making prev and next buttons work. jQuery is not my most robust language so I'd prefer a pure JS solution if possible, but I am open to anything.
/**
* selector helper function
*/
const select = (el, all = false) => {
el = el.trim()
if (all) {
return [...document.querySelectorAll(el)]
} else {
return document.querySelector(el)
}
}
/**
* onscroll event listener
*/
const onscroll = (el, listener) => {
el.addEventListener('scroll', listener)
}
// get to top after new page click
let pageTop = select('.page-top')
if (pageTop) {
const togglePagetop = () => {
if (window.scrollY > 100) {
pageTop.classList.add('active')
} else {
pageTop.classList.remove('active')
}
}
window.addEventListener('load', togglePagetop)
onscroll(document, togglePagetop)
}
/**
* Team Isotope and filter
*/
let teamIsotope = document.querySelector('.team-isotope');
if (teamIsotope) {
let teamFilter = teamIsotope.getAttribute('data-team-filter') ? teamIsotope.getAttribute('data-team-filter') : '*';
let teamLayout = teamIsotope.getAttribute('data-team-layout') ? teamIsotope.getAttribute('data-team-layout') : 'masonry';
let teamSort = teamIsotope.getAttribute('data-team-sort') ? teamIsotope.getAttribute('data-team-sort') : 'original-order';
window.addEventListener('load', () => {
let teamIsotope = new Isotope(document.querySelector('.team-container'), {
itemSelector: '.team-member',
layoutMode: teamLayout,
filter: teamFilter,
sortBy: teamSort
});
let menuFilters = document.querySelectorAll('.team-isotope .team-filters li');
menuFilters.forEach(function(el) {
el.addEventListener('click', function() {
document.querySelector('.team-isotope .team-filters .filter-active').classList.remove('filter-active');
this.classList.add('filter-active');
teamIsotope.arrange({
filter: this.getAttribute('data-filter')
});
if (typeof aos_init === 'function') {
aos_init();
}
}, false);
});
});
}
// attempt at making prev and next buttons work
var page = 0;
var $items = $(".team-container > .team-member");
var $grid = $(".team-container");
function filtre() {
var ell = [];
for (i = page * 3; i < (page + 1) * 3; i++) {
ell.push($items[i]);
}
$grid.isotope({
filter: ell
})
return ell;
}
$("#next").on("click", function() {
if (page < 3) {
page += 1;
filtre();
}
})
$("#prev").on("click", function() {
if (page > 0) {
page -= 1;
filtre();
}
})
.pagination-a .pagination .page-item.filter-active .page-link {
background-color: #72bf43;
}
.team-isotope {
display: flex;
flex-direction: column-reverse;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">
<div class="container">
<div class="team-isotope" data-team-filter=".filter-first" data-team-layout="masonry" data-team-sort="original-order">
<nav class="pagination-a">
<ul class="pagination justify-content-end team-filters">
<li class="page-item prev" id="prev">
<a class="page-link" href="#" tabindex="-1">
<span class="bi bi-chevron-left"></span>
</a>
</li>
<li data-filter=".filter-first" class="page-item filter-active">
<a class="page-link page-top" href="#">1</a>
</li>
<li data-filter=".filter-second" class="page-item">
<a class="page-link page-top" href="#">2</a>
</li>
<li class="page-item next" id="next">
<a class="page-link" href="#">
<span class="bi bi-chevron-right"></span>
</a>
</li>
</ul>
</nav>
<div class="row team-container">
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-first">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/000/fff" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d my-2 m-0">
<a href="" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
This company was founded and constructed by foo fooman.
</p>
<div class="info-agents color-a mt-3">
<p>
<strong class="color-b">Role: </strong> Principal
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> agents@example.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="team/nick-lind.html" class="color-text-a">
<i class="bi bi-link-45deg"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-first">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/000/fff" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d">
<a href="maintenance-mode.html" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
foo fooman is a Project Manager
</p>
<div class="info-agents color-a">
<p>
<strong class="color-b">Role: </strong> Project Manager
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> foo@foofooman.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-first">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/000/fff" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d">
<a href="maintenance-mode.html" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
foo is a Project Manager for
</p>
<div class="info-agents color-a">
<p>
<strong class="color-b">Role: </strong> Project Manager
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> foo@foofooman.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-second">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/e1e1e1/000000" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d my-2 m-0">
<a href="" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
This company was founded and constructed by foo fooman.
</p>
<div class="info-agents color-a mt-3">
<p>
<strong class="color-b">Role: </strong> Principal
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> agents@example.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="team/nick-lind.html" class="color-text-a">
<i class="bi bi-link-45deg"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-second">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/e1e1e1/000000" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d">
<a href="maintenance-mode.html" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
foo fooman is a Project Manager
</p>
<div class="info-agents color-a">
<p>
<strong class="color-b">Role: </strong> Project Manager
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> foo@foofooman.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 team-member filter-second">
<div class="card-box-d">
<div class="card-img-d">
<img src="https://dummyimage.com/200/e1e1e1/000000" alt="" class="img-d img-fluid">
</div>
<div class="card-overlay card-overlay-hover">
<div class="card-header-d">
<div class="card-title-d align-self-center">
<h3 class="title-d">
<a href="maintenance-mode.html" class="link-two">foo fooman
<i class="bi bi-link-45deg"></i>
</a>
</h3>
</div>
</div>
<div class="card-body-d">
<p class="content-d color-text-a">
foo is a Project Manager for
</p>
<div class="info-agents color-a">
<p>
<strong class="color-b">Role: </strong> Project Manager
</p>
<p>
<strong class="color-b">Phone: </strong> +54 356 945-2334
</p>
<p>
<strong class="color-b">Email: </strong> foo@foofooman.com
</p>
</div>
</div>
<div class="card-footer-d">
<div class="socials-footer d-flex justify-content-center">
<ul class="list-inline">
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-facebook" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-twitter" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-instagram" aria-hidden="true"></i>
</a>
</li>
<li class="list-inline-item">
<a href="#" class="color-text-a">
<i class="bi bi-linkedin" aria-hidden="true"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.js" integrity="sha512-E/yP5UiPXb6VelX+dFLuUD+1IZw/Kz7tMncFTYbtoNSCdRZPFoGN3jZ2p27VUxHEkhbPiLuZhZpVEXxk9wAHCQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
Note: I'd like to have prev disabled when the page loads, and enabled after next is clicked. & vice versa.