Я сделал очень простой слайдер изображений с помощью swiper, затем добавил пользовательскую разбивку на страницы, используя jQuery "paginationCustomRender" swiper и атрибуты данных. генерирует разбиение на страницы просто отлично, и все работает при скольжении, но не кликабельно, поэтому я добавил небольшую функцию, чтобы сообщить моему слайдеру «slideTo ()» целевого слайда, когда одна из меток в разбивке на страницы нажата, но она работает только один раз, а затем функция не запустится снова. Я искал и из того, что я узнал, большинство людей не использовали встроенные параметры swiper и сделали его сами, поэтому мне было интересно, что мне делать и как лучше всего это делать.
заранее спасибо
вот мой 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>
и вот 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();
});