J'ai fait une glissière d'image très simple avec swiper puis ai ajouté la pagination personnalisée en utilisant le "paginationCustomRender" jQuery et les attributs de données elle produit la pagination juste bien et tout fonctionne en glissant mais n'est pas cliquable donc j'ai ajouté un petite fonction pour indiquer à mon curseur de "slideTo()" la diapositive ciblée lorsque l'on clique sur l'une des étiquettes de la pagination mais cela ne fonctionne qu'une seule fois et la fonction ne redémarre pas. J'ai cherché et de ce que j'ai découvert la plupart des gens n'ont pas utilisé les options intégrées de swiper et l'ont fait eux-mêmes alors je me demandais ce que je devrais faire et quelle est la meilleure approche pour le faire.pagination personnalisée de swiper glisse seulement une fois
Merci à l'avance
voici mon code HTML:
<div class="main_slider_wrapper left">
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="slide_item swiper-slide" data-name="slide-1">
<a href="#">
<img src="assets/img/pages/home/main-slider/Banner1.jpg" alt="">
</a>
</div>
<!-- /slide_item -->
<div class="slide_item swiper-slide" data-name="slide-2">
<a href="#">
<img src="assets/img/pages/home/main-slider/Banner2.jpg" alt="">
</a>
</div>
<!-- /slide_item -->
<div class="slide_item swiper-slide" data-name="slide-3">
<a href="#">
<img src="assets/img/pages/home/main-slider/Banner3.jpg" alt="">
</a>
</div>
<!-- /slide_item -->
</div>
<!-- /swiper-wrapper -->
<div class="swiper-button-prev fawesome fa-chevron-left"></div>
<div class="swiper-button-next fawesome fa-chevron-right"></div>
<div class="main_slider_pagination_wrapper swiper-pagination"></div>
</div>
<!-- /swiper-container -->
</div>
et voici les js:
function mainSliderFn() {
var mainSliderElement = $('.main_slider_wrapper .swiper-container')[0];
var mainSliderNext = $('.main_slider_wrapper .swiper-button-next')[0];
var mainSliderPrev = $('.main_slider_wrapper .swiper-button-prev')[0];
mainSlider = new Swiper(mainSliderElement, {
direction: 'horizontal',
loop: false,
spaceBetween: 0,
slidesPerView: 1,
autoResize: false,
speed: 1500,
nextButton: mainSliderNext,
prevButton: mainSliderPrev,
pagination: '.main_slider_pagination_wrapper',
paginationClickable: true,
paginationType: "custom",
paginationCustomRender: function(swiper, current, total) {
var names = [];
$(".main_slider_wrapper .slide_item").each(function(i) {
names.push($(this).data("name"));
});
var text = "<span style='background-color:white;padding:20px;'>";
for (let i = 1; i <= total; i++) {
if (current != i) {
text += "<span class='main_slider_label swiper-pagination-clickable' data-index='"+i+"'>" + names[i-1] + "</span>";
} else {
text += "<span class='main_slider_label swiper-pagination-clickable active_label' data-index='"+i+"'>" + names[i-1] + "</span>";
}
}
text += "</span>";
return text;
},
});
};
function clickableLabelsFn(){
$('.main_slider_label').on('click', function(e){
var clicked = $(this);
var mytarget = $(clicked).data('index');
if(!$(clicked).hasClass('active_label'))
{
mainSlider.slideTo(mytarget-1);
}
});
};
$(document).ready(function() {
mainSliderFn();
clickableLabelsFn();
});
Merci pour la lecture, comment avez-vous obtenu ce travail, avez-vous une démo? – Dan
@Dan Désolé je ne suis pas, je suis assez occupé sur un projet en ce moment mais je vais faire une démo a.s.a.p. Si vous êtes pressé, vous pouvez en faire un en utilisant les exemples de codes que j'ai ajoutés à la question. – user1435897