swiper插件 點擊事件 的坑


需求:我需要做的東西是,下面輪播6個視頻,點擊視頻,上面大視頻播放對應的內容

遇到的坑:當時是只並排顯示3個,6個視頻循環第一遍的時候點擊事件都正常,但是第二遍的1,2,3點擊事件失效,4,5,6正常

 

嘗試了很多版本的swiper(3版本,4版本,vue-awesome-swiper:3.1.1)都有這種現象

有兩個解決方案:

一:關掉swiper的環路屬性(loop:false),這樣一直都是正常的

二:點擊事件,用原生js寫

 

/**
         * 給視頻添加點擊事件
         */

        addEventClickToVideo(){
            const newSwiper = document.getElementById("swiper")
            const item = newSwiper.getElementsByClassName('swiper-video')
            item.forEach((element,index) => {
                element.onclick = ($event)=>{
                    console.log($event)
                    console.log($event.currentTarget.dataset.url);         //  $event.currentTarget 獲取到的是上一層的元素      $event.arget 獲取到的是本層的元素
const _url = $event.currentTarget.dataset.url // 知識點:此處獲取的 url 是 html5中自定義屬性data-*,比如此處的url, 是從該元素屬性 date-url='' 獲取的
const _cover
= $event.currentTarget.dataset.cover
this.handleSwiperVideo(_url,_cover)
$event.preventDefault()
$event.stopPropagation();
}
});
}
 new Swiper('.swiper-container', {
                    autoplay:true,
                    loop:true,
                    slidesPerView:3,
                    on:{
                        init:function(swiper){
                            _self.addEventClickToVideo()        //  在swiper回調中調用點擊事件
                        }
                    },
                    // 左右按鈕
                    navigation: {
                        nextEl: '.swiper-button-next',
                        prevEl: '.swiper-button-prev',
                    },
                
                })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM