欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中swiper開啟loop后,點擊事件不響應的解決方案

 更新時間:2022年09月08日 16:21:19   作者:默賾  
這篇文章主要介紹了vue中swiper開啟loop后,點擊事件不響應的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

swiper開啟loop后,點擊事件不響應

接手離職同事的項目,然后發(fā)現(xiàn)banner圖翻頁后會出現(xiàn)點擊事件不響應,于是修改,網(wǎng)上找了很多方法都無法實現(xiàn)

問題代碼如下

?? ?<swiper v-if="bannerArr.length>0" class="home-swper" ref="mySwiper" :options="swiperOptions">
?? ??? ??? ??? ?<swiper-slide
?? ??? ??? ??? ??? ?v-for="(list,inx) in bannerArr"
?? ??? ??? ??? ??? ?:key="inx">
?? ??? ??? ??? ??? ?<img class="banner-img" @click="videoPlay(list)" :src="list.bannerPhotoPath" alt="">
?? ??? ??? ??? ?</swiper-slide>
?
?? ??? ??? ??? ?<div class="swiper-pagination" slot="pagination"></div>
?? ??? ??? ?</swiper>

data()中的swiperOptions配置如下

swiperOptions: {
?? ??? ??? ??? ?pagination: {
?? ??? ??? ??? ??? ?el: '.swiper-pagination'
?? ??? ??? ??? ?},
?? ??? ??? ??? ?loop: true,
?? ??? ??? ??? ?autoplay: 5000,
?? ??? ??? ??? ?speed: 950,
?? ??? ??? ??? ?observer: true,
?? ??? ??? ??? ?// 修改swiper自己或子元素時,自動初始化swiper
?? ??? ??? ??? ?observeParents: true
?? ??? ??? ??? ?// Some Swiper option/callback...
?? ??? ??? ?},

loop配置項設置為true后,swiper 會將數(shù)組中的banner多復制出來兩張,分別是第一張和最后一張,這樣輪播起來才會流暢,但是復制的時候值復制了圖片內容 并沒有吧點擊事件復制了,所以會出現(xiàn)點擊事件不起效的現(xiàn)象.

例如:

輪播圖原本是3張[a,b,c]  但是執(zhí)行的時候是5張[c1,a,b,c,a1]

最終找到了一個解決辦法  使用@click-slide  但@click-slide 只能在swiper標簽上使用,所以點擊事件不能直接傳值 只能一同修改.

<swiper v-if="bannerArr.length>0" class="home-swper" ref="mySwiper" :options="swiperOptions" @click-slide="videoPlay">
?? ??? ??? ??? ?<swiper-slide
?? ??? ??? ??? ??? ?v-for="(list,inx) in bannerArr"
?? ??? ??? ??? ??? ?:key="inx">
?? ??? ??? ??? ??? ?<img class="banner-img" :src="list.bannerPhotoPath" alt="">
?? ??? ??? ??? ?</swiper-slide>
?? ??? ??? ??? ?<div class="swiper-pagination" slot="pagination"></div>
?? ??? ??? ?</swiper>

@click-slide 在swiper標簽上,就無法直接渠道v-for循環(huán)時的直接取的值了,但@click-slide傳的參數(shù)有序列,遂點擊方法中只能通過對比數(shù)組中的索引號來進行取值

videoPlay(list){
?? ??? ??? ?//將點擊時獲取的的banner圖的序列號轉為數(shù)組的索引值
?? ??? ??? ?let inx = list-1
?? ??? ??? ?//當序列號是0的時候判為數(shù)組的最后一位
?? ??? ??? ?if(list == 0 ){
?? ??? ??? ??? ?inx = this.bannerArr.length-1
?? ??? ??? ?//當序列號是大于數(shù)組1的時候判為數(shù)組的第一位
?? ??? ??? ?}else if(list == this.bannerArr.length+1){
?? ??? ??? ??? ?inx = 0
?? ??? ??? ?}
?? ??? ??? ?//取數(shù)組中的值
?? ??? ??? ?let i = this.bannerArr[inx]
? ? ? ? ? ? console.log(i)
? ? ? ? }

前面說到

輪播圖原本是3張[a,b,c]  但是執(zhí)行的時候是5張[c1,a,b,c,a1]

所以這個輪播圖的索引就變成了  [c1,a,b,c,a1]  ==> [0 1 2 3 4 ]       5個數(shù)  未判斷前能正常點擊的只有 序列123  而復制出來的0和4則無法點擊 ,而0是c圖  4則是a圖  需要走上方判斷.

swiper設置loop:true時點擊事件失效

項目中使用 swiper 時,設置 loop:true時,slides前后會clone若干個slide,從而形成一個環(huán)路,但是卻不會復制綁定在dom上的click事件,導致復制的slides點擊不會跳轉。

解決

不要將click事件綁定在dom上,而是在放在 on() 回調函數(shù)中調用。

代碼如下:

<div class="swiper-father swiper-hot">
? ? <swiper :options="swiperOption" ref="mySwiper" v-if="homeData5">
? ? <!-- slides -->
? ? ? ? ?<swiper-slide ?
? ? ? ? ? ? v-for='(item,index) in homeData[5]'
? ? ? ? ? ? :key="index">?
? ? ? ? ? ? <!-- @click="goInto(item.id)" -->
? ? ? ? ? ? <img :src="item.imgUrl" :data-itemid="item.id">
? ? ? ? </swiper-slide> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? </swiper>
? ? <div class="swiper-button-prev btn-swiper swiper-button" ?slot="button-prev"></div>
? ? <div class="swiper-button-next btn-swiper swiper-button" slot="button-next"></div>
</div> ? ?

data部分:

swiperOption: {
    slidesPerView: 3,
    centeredSlides:true, 
    loop:true,
    observer:true,
    observeParents:true, // 當Swiper的父元素變化時,會更新swiper
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev'
    },
    on:{
        transitionStart(){ // 開始translate之前觸發(fā)
            // 如果是第一張
            if(this.activeIndex == 0){
                this.setTranslate(0); // 設置位移為0
            }
        },
        click(e) {
        	// 使用e.target事件代理獲取點擊的元素,通過data語法獲取元素的屬性值
            let url = e.target.dataset.itemid;
            // 這里的this指向輪播,所以我在外邊聲明了_this用來代表vue實例
            _this.goInto(url); // 跳轉到詳情頁
        }
    }
},

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 5個可以加速開發(fā)的VueUse函數(shù)庫(小結)

    5個可以加速開發(fā)的VueUse函數(shù)庫(小結)

    VueUse為Vue開發(fā)人員提供了大量適用于Vue2和Vue3的基本Composition API 實用程序函數(shù)。具有一定的參考價值,感興趣的可以了解一下
    2021-11-11
  • vite+vue3項目中使用SVG方式

    vite+vue3項目中使用SVG方式

    這篇文章主要介紹了vite+vue3項目中使用SVG方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中循環(huán)請求接口參數(shù)問題及解決

    vue中循環(huán)請求接口參數(shù)問題及解決

    這篇文章主要介紹了vue中循環(huán)請求接口參數(shù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue實現(xiàn)簡單轉盤抽獎功能

    vue實現(xiàn)簡單轉盤抽獎功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)簡單轉盤抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue3在setup中使用mapState解讀

    vue3在setup中使用mapState解讀

    這篇文章主要介紹了vue3在setup中使用mapState方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue實現(xiàn)在線預覽pdf文件和下載(pdf.js)

    vue實現(xiàn)在線預覽pdf文件和下載(pdf.js)

    這篇文章主要為大家詳細介紹了vue實現(xiàn)在線預覽pdf文件和下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Vue中使用Ueditor的示例詳解

    Vue中使用Ueditor的示例詳解

    這篇文章主要介紹了Vue中使用Ueditor的方法,本文通過實例給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • vue自定v-model實現(xiàn)表單數(shù)據(jù)雙向綁定問題

    vue自定v-model實現(xiàn)表單數(shù)據(jù)雙向綁定問題

    vue.js的一大功能便是實現(xiàn)數(shù)據(jù)的雙向綁定。這篇文章主要介紹了vue自定v-model實現(xiàn) 表單數(shù)據(jù)雙向綁定的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • vue點擊項目唯一id生成器nanoid的使用方式

    vue點擊項目唯一id生成器nanoid的使用方式

    這篇文章主要介紹了vue點擊項目唯一id生成器nanoid的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Vue獲取DOM元素并修改屬性的方法

    Vue獲取DOM元素并修改屬性的方法

    這篇文章主要介紹了Vue獲取DOM元素并修改屬性或者樣式,文中通過兩種方法給大家介紹了vue 如何獲取并操作DOM元素,需要的朋友可以參考下
    2022-10-10

最新評論