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

vue中v-for循環(huán)選中點擊的元素并對該元素添加樣式操作

 更新時間:2020年07月17日 10:24:29   作者:I_recluse  
這篇文章主要介紹了vue中v-for循環(huán)選中點擊的元素并對該元素添加樣式操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

相信大家都會遇到這種情況:v-for循環(huán)時,我只需要點擊到的元素做出相應反應,其他的元素不變;但是往往所有v-for循環(huán)出的元素都會變化。如下面的代碼:我需要點擊到的元素添加一個類樣式,其他元素不變,但是這樣會導致所有的元素都會變化

html:

<div v-for = "(item,index) in items" :class = 'addclass:isactive' @click='onclick()'>
 <span>{{item.name}}</span>
</div>

css:

.addclass{
 color : red;
}

js:

data:{
 items :[
  {
  name :'apple',
  price: '5$'
  },
  {
  name:'banana',
  price:"3$"
  },
  {
  name:'pear',
  price:'4$'
  }
 ],
 isactive : false
}

onclick(){
 this.isactive = true
}

解決方法:使用index索引,當點擊一個元素時,將該元素的index索引賦給類樣式的啟用變量,如果該變量和index相等時,則啟用該類樣式

html:

<div v-for = "(item,index) in items" :class = "isactive == index ? 'addclass' : '' " @click='onclick(index)'>
 <span>{{item.name}}</span>
</div>

css:

.addclass{
 color : red;
}

js:

data:{
 items :[
  {
  name :'apple',
  price: '5$'
  },
  {
  name:'banana',
  price:"3$"
  },
  {
  name:'pear',
  price:'4$'
  }
 ],
 isactive : -1
}
onclick(index){

 //將點擊的元素的索引賦值給bian變量
 this.isactive = index
}

補充知識:v-for 遍歷數組點擊動態(tài)綁定樣式

這可能是一個對于任何js開發(fā)者來說都非常簡單的問題,或者根本談不上被叫做“問題”,“基操”而已。但是,很遺憾,我為此開了個篇幅簡略記錄下它,因為這是我處于前端開發(fā)基礎階段數次阻滯過我的問題,以下暫提供一種解決方案,后續(xù)可能補充。

這類問題多見于單頁面應用(SPA)中的側邊欄、表格列等,當我曾拿到這個需求時,我以為我能用Vue中介紹的Class動態(tài)綁定來解決,事實上的確如此,但我用錯了,請看我錯誤的解決方法:

HTML

<template>
<!-- 點擊某個綁定樣式 -->
 <ul>
  <li v-for="(data, index) in formData" :key="data.id" :class="{active: isActive}" @click="currentInfo(data, index)">name: {{data.name}},age: {{data.age}}
  </li>
 </ul>

</template>

JavaScript

<script>
export default {
  name: 'classActive'
  data() {
    return {
      isActive: false,  // 用來判斷active樣式類是否顯示
      formData: [{
        id: 1,
        name: 'zhangsan',
        age: 20
      },{
        id: 2,
        name: 'lisi',
        age: 21
      },{
        id: 3,
        name: 'wangwu',
        age: 22
      }
    }
  }
  methods: {
    currentInfo(data, index) {
      if(data.id-1 === index) { // 當前選擇的列表項與列表id號相等則綁定active
       this.isActive = true;
      }
    }
  }
}
</script>

Style

<style scoped>
  li {
    list-style: none;
    border: 1px solid #333;
  }
  .active {
    background: light-gray;
  }
</style>

好,于是我興沖沖地切回頁面看效果,結果:

當我點擊其中的一行時,結果所有的li都綁上了active樣式,稍微想一下,相信大家都能找到問題所在,所有l(wèi)i的樣式都由一個isActive控制,當我點擊一行,全局變量isActive變?yōu)閠ure,當然所有的li都會綁上啦!然后我就停滯下來,思索一番,想過在data數組各項里插入一個標識用來單獨控制,但被我否決了,一來對象中插入屬性麻煩,二來污染數據源。于是,便有了下面我要說的解決方法:

HTML

<template>
<!-- 點擊某個綁定樣式 -->
 <ul>
  <li v-for="(data, index) in formData" :key="data.id" :class="currentClass(index)" @click="currentInfo(index)">name: {{data.name}},age: {{data.age}}
  </li>
 </ul>

</template>

JavaScript

<script>
export default {
  name: 'classActive'
  data() {
    return {
      currentNumber: 0,  // 用來判斷active樣式類是否顯示
      formData: [{
        id: 1,
        name: 'zhangsan',
        age: 20
      },{
        id: 2,
        name: 'lisi',
        age: 21
      },{
        id: 3,
        name: 'wangwu',
        age: 22
      }
    }
  }
  methods: {
    currentInfo(index) {
      this.currentNumber = index;
    },
    currentClass(index) {
      return [this.currentNumber == index ? 'active' : ''];
    }
  }
}
</script>

Style

<style scoped>
  li {
    list-style: none;
    border: 1px solid #333;
  }
  .active {
    background: light-gray;
  }
</style>

這里,我新建一個變量空間存儲當前點擊的列表序號index,這樣不管怎樣點擊,這個currentNumber永遠是唯一的,那么和它相等的數組項也是唯一的,相等即可綁定active樣式了,看效果:

好,以上就解決了遍歷數組點擊動態(tài)綁定樣式,以后我找到更好的,我會補充,也非常歡迎大家在評論里給出更好的建議。

以上這篇vue中v-for循環(huán)選中點擊的元素并對該元素添加樣式操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue編寫自定義Plugin詳解

    Vue編寫自定義Plugin詳解

    這篇文章主要介紹了Vue編寫自定義Plugin詳解,在Vue開發(fā)中,我們經常需要使用一些第三方庫或功能性模塊,Vue插件就是一種將這些庫或模塊集成到Vue應用中的方式,插件是Vue.js提供的一種機制,用于擴展Vue的功能,需要的朋友可以參考下
    2023-08-08
  • vue結合axios實現restful風格的四種請求方式

    vue結合axios實現restful風格的四種請求方式

    這篇文章主要介紹了vue結合axios實現restful風格的四種請求方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 在vue項目中使用Swiper插件詳解

    在vue項目中使用Swiper插件詳解

    這篇文章主要介紹了在vue項目中使用Swiper插件詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Element中Upload組件上傳功能實現(圖片和文件的默認上傳及自定義上傳)

    Element中Upload組件上傳功能實現(圖片和文件的默認上傳及自定義上傳)

    這篇文章主要介紹了Element中Upload組件上傳功能實現包括圖片和文件的默認上傳及自定義上傳,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 詳解vue數據渲染出現閃爍問題

    詳解vue數據渲染出現閃爍問題

    本篇文章主要介紹了vue數據渲染出現閃爍問題,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue路由 遍歷生成復數router-link的例子

    vue路由 遍歷生成復數router-link的例子

    今天小編就為大家分享一篇vue路由 遍歷生成復數router-link的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 使用Vue實現圖片上傳的三種方式

    使用Vue實現圖片上傳的三種方式

    在項目中經常會遇到圖片上傳功能,今天腳本之家小編給大家?guī)砹耸褂肰ue實現圖片上傳的三種方式,感興趣的朋友一起看看吧
    2018-07-07
  • 詳解win7 cmd執(zhí)行vue不是內部命令的解決方法

    詳解win7 cmd執(zhí)行vue不是內部命令的解決方法

    這篇文章主要介紹了詳解win7 cmd執(zhí)行vue不是內部命令的解決方法的相關資料,這里提供了解決問題的詳細步驟,具有一定的參考價值,需要的朋友可以參考下
    2017-07-07
  • vue實現側邊欄導航效果

    vue實現側邊欄導航效果

    這篇文章主要為大家詳細介紹了vue實現側邊欄導航效果,右側顯示對應內容,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • vue權限管理系統(tǒng)的實現代碼

    vue權限管理系統(tǒng)的實現代碼

    這篇文章主要介紹了vue權限管理系統(tǒng)的實現代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01

最新評論