vue 点击当前元素进行显示隐藏,上次点过的元素隐藏

 功能描述:当一直点击2时,切换显示隐藏, 当2展开时,在点击1时,2隐藏,1显示。

<ul id="mttUl" class="mttUl">
    <li  v-for="(item,index) in aboutData.mttImg" :key="index">
        <!-- -->                      
        <img :src="item.img" :alt="item.name"  @click="stretchFn($event,index)">
    </li>
</ul> 

<script>
export default {
    data(){
        return {
            //图片点击切换
            active:0,
            removeAc:-1,
            isStatus:false,     //判断当前是展开还是收回
            currentIndex:-1,    //获取当前下标
            switchEle:0,    //切换点击元素  
        }
    },
    methods: {
        stretchFn($event,index){
            var getEle  = document.querySelectorAll('.mttUl li');   //获取所有的li元素;

            if(this.switchEle != index){

                getEle[this.switchEle].classList.remove('active');

            }

            for(let i = 0 ; i < getEle.length; i++){

                if(getEle[index].classList.contains('active')){  //是否含有active

                    getEle[index].classList.remove('active')   //移除active

                }else{

                    getEle[index].classList.add('active');    //添加active

                    this.switchEle = index;
                }
            }
        } 
    }
}
</script>
               

补充知识点:

$event 可以获取当前点击标签信息内容 

$event.currentTarget.parentElement.getAttribute('class')       //获取当前标签父元素class

$event.currentTarget.parentElement.parentElement;  //获取当前元素父元素的父元素

$event.currentTarget.parentElement.children;      //获取当前元素父元素下的子元素

document.querySelectorAll('.mttUl li')             //获取所有的指定类名元素

getEle[index].classList.contains('active')      // 判断当前元素是否含有某个类

getEle[index].classList.remove('active')        // 当前元素移除某个类

getEle[index].classList.add('active');           //当前元素添加某个类

  • e.target 获取当前点击的元素
  • e.currentTarget 获取绑定事件的元素
  • e.currentTarget.previousElementSibling 获取前(上)一个元素
  • e.currentTarget.parentElement 获取父元素
  • e.currentTarget.firstElementChild 获取第一个子元素
  • e.currentTarget.nextElementSibling 获取后(下)一个元素
  • e.currentTarget.getAttributeNode('class') 获得点击元素的class属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue通过条件渲染指令可以控制元素显示隐藏。常见的条件渲染指令有v-if、v-else-if和v-else。 在模板中,我们可以使用v-if指令来根据数据的真假值进行条件渲染,如果为true就渲染该元素,否则就不渲染。例如: ```html <template> <div> <p v-if="isShow">这是要显示的内容</p> </div> </template> ``` 当isShow属性为true时,就会把`<p>`元素渲染出来,否则就不会显示。 v-else-if指令和v-else指令可以实现多个条件的选择渲染。例如: ```html <template> <div> <p v-if="isShow">这是要显示的内容</p> <p v-else-if="isShow2">这是第二个要显示的内容</p> <p v-else>这是要隐藏的内容</p> </div> </template> ``` 当isShow属性为true时,就会把第一个`<p>`元素渲染出来;当isShow2属性为true时,就会把第二个`<p>`元素渲染出来;当前两个属性都为false时,就会把第三个`<p>`元素渲染出来。 此外,我们还可以使用v-show指令来实现元素显示隐藏。和v-if不同的是,v-show不是通过添加和删除DOM节点来实现的,而是通过修改CSS属性display的值来控制元素显示隐藏。例如: ```html <template> <div> <p v-show="isShow">这是要显示的内容</p> </div> </template> ``` 当isShow属性为true时,就会把`<p>`元素显示出来;当isShow属性为false时,就会把`<p>`元素隐藏起来。需要注意的是,v-show指令不支持v-else-if和v-else指令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值