文档章节

使用Vue实现jQuery的切换选中效果

G
 GreatWall2017
发布于 2017/04/28 19:24
字数 427
阅读 342
收藏 0

实际项目中,我们会遇到很多类似的需求,一个列表,需要点击其中一条高亮显示。熟悉JQuery的同学说这个太简单了。可以给这个选中的element设置一个active的class。配合Css样式,让active有选中高亮效果。但是谁说一定要用到jQuery呢。

  最近在做的项目中,我尝试脱离JQuery,绕过JQuery,我所接触的大部分项目中好像不使用JQuery无法进行开发一样。它确实给开发者提供了太多便利。以至于大部分web网站都依赖它运行着。据w3Techs统计,JQuery的市场份额高达94.9%,是时候脱离JQuery的束缚了。使用Vue.js更简洁,快速地实现。

  选中效果实现的核心实现逻辑是拷贝一份当前状态作为快照。比对列表的快照当前的唯一索引,如果相同则视为选中。

<div id="app">
  <div class="collection">
    <a href="#!" class="collection-item"
       v-for="gameName in gameNames"
       @click="selected(gameName)"
       :class="{active: activeName == gameName}">{{gameName}}</a>
  </div>
</div>
new Vue({
  el: "#app",
  data: {
    gameNames: ['魔兽世界', '暗黑破坏神Ⅲ', '星际争霸Ⅱ', '炉石传说', '风暴英雄',
      '守望先锋'
    ],
    activeName: ''
  },
  methods: {
    selected: function(gameName) {
      this.activeName = gameName
    }
  }
})
<style> 
    .active { color: #f00;}
</style>  

参考:https://jsfiddle.net/xiaoluoboding/z5xusoL9/

          http://xlbd.me/vue-js-selected-highlight/

 

补充:利用item的index进行判断

<div class="btn-group TP_time_btnBox" role="group">
    <template v-for="(item,index) in topoTime.data">
        <button type="button" class="btn btn-default" @click="switchTab(item,index)" :class="{active3: topoTime.activeIndex == index}">{{item.name}}</button>
    </template>
</div>
.active3{
    background: #35bcff!important;
    color:#fff!important;
    border:1px solid transparent!important;
}
"topoTimeTemp":{
	"activeIndex":0,
	"data":[
		{"name":"现网"},
		{"name":"2017--12"},
		{"name":"2018--12"},
		{"name":"2019--12"}
	]
}
data:{
	topoTime:{}
}

this.$http.get("scripts/e2e_data.json").then(function(res){
	    this.topoTime = res.data.result.topoTimeTemp;
					
	}).catch(function(res){
		console.log(res);
	});

switchTab:function(item,index){
	if(this.slideBarSwitch.activeIndex != index){
		this.slideBarSwitch.activeIndex = index;
	};
}

 

© 著作权归作者所有

共有 人打赏支持
G
粉丝 0
博文 25
码字总数 13402
作品 0
深圳
私信 提问
鼠标移入移出效果 -- jQuery/Vue版

元素内遮罩层根据鼠标方向显示的效果比较常见,比如百度图片里的图片信息展示。自己动手实现jQuery插件版和Vue组件版效果。 原文链接 实现思路 1、根据鼠标的位置定位在元素内出现的方向 2、...

bestvist
06/22
0
0
vue获取input输入框的数据

用惯了jQuery,突然使用vue感觉很不习惯,有很多不同的地方,感觉是两个不同的思想来写前端的代码。jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作。而Vue则是通过...

王子城
06/21
0
0
vue结合bootstrap4.0使用

一般vue都是结合elementui 、mint-ui等使用,但是自己还是想结合bootstrap来使用,在使用的过程中遇到一些报错 使用bootstrap 要结合jQuery来使用的,首先要安装依赖 npm install jquery --s...

杏sunshine
05/16
0
0
走进webpack(2)--第三方框架(类库)的引入及抽离

  正文之前,由于这是一个系列的文章,可能第一次看到的看官老爷们会觉得突兀,如果你是webpack新手,我建议你先从前几篇文章看起,如果你对webpack有一些了解,也希望可以在github上下载代...

zaking
03/29
0
0
Vue中关于DOM操作,获取当前节点父节点的父节点

目前正在用VUE框架做一个项目,再操作DOM时,采用的jQuery,$(this).parent().parent(),但是组长不允许,让采用VUE本身的DOM操作,百度好长时间没有结果,求推荐。 麻烦推荐专业介绍VUE中D...

一辈白开水
2017/01/09
8.6K
8

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
10
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部