2017-01-27 3 views
0

Содержит ли Swiper (http://www.idangero.us/swiper) событие для скольжения с определенным классом? Существует событие slideTo (index), но мне нужно что-то вроде slideTo (". Slide-classname").Swiper: slideTo (". Slide-classname")

Это то, что я пытаюсь сделать - может быть другой подход возможен:

<script type="text/javascript"> 
    $j(document).ready(function(){ 
     $j("#attribute529").change(function() { 
     var optionValue = $j(this).val(); 
     var optionValueText = $j.trim($j('#attribute529 :selected').text()); 
     if(! optionValue){ 
      galleryTop.slideTo(0); 
     } else { 
      galleryTop.slideTo(".product-image_" + optionValueText); 
     } 
     }); 
    }); 
</script> 

ответ

0

Я создал решение ниже, здесь я создал функцию getSlideIndexByClass, которая будет возвращать индекс элемент в слайдере по имени его класса, а затем я просто вызываю функцию slideTo с этим значением индекса.

var swiper = new Swiper('.swiper-container', { 
 
    pagination: '.swiper-pagination', 
 
    paginationClickable: true 
 
}); 
 

 
swiper.slideTo(getSlideIndexByClass('my-class')); 
 

 
function getSlideIndexByClass(className) { 
 
    var index = 0; 
 
    $.each($('.swiper-wrapper').children(), function(i, item) { 
 
    if ($(item).hasClass(className)) { 
 
     index = i; 
 
     return false; 
 
    } 
 
    }); 
 
    return index; 
 
}
html, 
 
body { 
 
    position: relative; 
 
    height: 100%; 
 
} 
 
body { 
 
    background: #eee; 
 
    font-family: Helvetica Neue, Helvetica, Arial, sans-serif; 
 
    font-size: 14px; 
 
    color: #000; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.swiper-container { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 
.swiper-slide { 
 
    text-align: center; 
 
    font-size: 18px; 
 
    background: #fff; 
 
    /* Center slide text vertically */ 
 
    display: -webkit-box; 
 
    display: -ms-flexbox; 
 
    display: -webkit-flex; 
 
    display: flex; 
 
    -webkit-box-pack: center; 
 
    -ms-flex-pack: center; 
 
    -webkit-justify-content: center; 
 
    justify-content: center; 
 
    -webkit-box-align: center; 
 
    -ms-flex-align: center; 
 
    -webkit-align-items: center; 
 
    align-items: center; 
 
}
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/css/swiper.min.css" rel="stylesheet" /> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.1/js/swiper.jquery.min.js"></script> 
 
<div class="swiper-container"> 
 
    <div class="swiper-wrapper"> 
 
    <div class="swiper-slide">Slide 1</div> 
 
    <div class="swiper-slide">Slide 2</div> 
 
    <div class="swiper-slide">Slide 3</div> 
 
    <div class="swiper-slide">Slide 4</div> 
 
    <div class="swiper-slide">Slide 5</div> 
 
    <div class="swiper-slide my-class">Slide 6</div> 
 
    <div class="swiper-slide">Slide 7</div> 
 
    <div class="swiper-slide">Slide 8</div> 
 
    <div class="swiper-slide">Slide 9</div> 
 
    <div class="swiper-slide">Slide 10</div> 
 
    </div> 
 
    <!-- Add Pagination --> 
 
    <div class="swiper-pagination"></div> 
 
</div>

+0

Извините за глупый вопрос, но где бы я добавить эту функцию? Я попытался добавить его в свой код swiper js (который находится в файле шаблона differnet), а также попытался добавить его непосредственно в мой код, показанный выше, но я не могу заставить его работать. – loeffel

+0

добавьте функцию getSlideIndexByClass в тот же тег скрипта, который вы упомянули в своем вопросе, а затем вызываете 'galleryTop.slideTo (getSlideIndexByClass (". Product-image_ "+ optionValueText)); вместо' galleryTop.slideTo (". product-image_ "+ optionValueText);' –

+0

Так что проблема в том, что мой скрипт swiper и скрипт, который я разместил, расположены в двух разных файлах шаблонов. Использование вашего кода в моем media.phtml (где находится swiper), будет работать, поэтому я принял ваш ответ. Поскольку я не могу поместить свой сценарий в файл media.phtml, мне нужно будет выяснить, как сделать эту работу по отдельным файлам шаблонов, чтобы разрешить выбор переключателя изображений. – loeffel