如何在vue项目中给ul>li列表使用事件委托

Vue实现点击li后变色 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <titl. 阅读详情
ul>
    <li v-for="(item, index) in data" @click="handleClick(index)">
        Click Me
    </li>
</ul>

然后这样的话,结果就是所有的li元素都绑定了事件。

我们都知道,过多的事件对于性能来说是很糟糕的,尤其在移动端,可以说是无法容忍。为了更好的解决这个性能问题,我们在这里要引入一个事件委托(又叫事件代理)的概念。即子不教父子过,子债父偿......

我们可以通过在li元素中额外加一个data-index就可以实现委托啦~

<body>
  <div id="app">
    <my-component></my-component>
  </div>
  
  <script src="./vue.js"></script>
  <script>
    let component = {
      template: `
        <ul @click="handleClick">
          <li v-for="(item, index) in data" :data-index="index">
            {{ item.text }}
          </li>
        </ul>
      `,
      data() {
        return {
          data: [
            {
              id: 0,
              text: '0',
            },
            {
              id: 1,
              text: '1',
            },
            {
              id: 2,
              text: '2',
            }
          ]
        }
      },
      methods: {
        handleClick(e) {
          // 注意一定要过滤掉ul,不然会出问题
          if (e.target.nodeName.toLowerCase() === 'li') {
            const index = parseInt(e.target.dataset.index)
            // 获得引索后,只需要修改data数据就能改变UI了
            this.doSomething(index)
          }
        },
        doSomething(index) {
          // do what you want
          alert(index)
        }
      }
    }

    new Vue({
      el: '#app',
      components: {
        'my-component': component
      }
    })
  </script>
</body>

 

Vue之事件绑定(初识Vue事件) Vue 的事件绑定是指通过 Vue 提供的v-on指令来监听 DOM 事件,当特定事件被触发时执行相应的方法或表达式。事件绑定在 Vue 中是一种重要的交互机制,它使得开发者可以轻松地响应用户的交互行为,并进行相应的逻辑处理。当在 Vue 中使用事件绑定时,通常会使用v-on或简写形式来监听 DOM 事件,并在触发事件时执行相应的方法。监听事件:使用v-on指令来监听 DOM 事件,语法为v-on:event,其中event是要监听的事件名,例如clickmouseover等。也可以使用简写形式。 阅读详情

相关推荐

图信号处理中的多尺度分析:图小波变换与图傅里叶变换的对比与应用

本文深入探讨了图信号处理中的多尺度分析方法,重点对比了图小波变换(GWT)与图傅里叶变换(GFT)的技术特点与应用场景。通过分析图的拓扑结构,GWT展现出强大的局部洞察力,适用于异常检测和社区发现;而GFT则擅长全局频率分析,适合趋势分析和信号去噪。文章结合实战案例,为读者提供了方法选型指南和前沿进展,帮助开发者在生物信息学、社交网络分析等领域高效应用这些技术。

weixin_30369041的博客 406

vue2使用ul,li实现下拉列表

用组件库的时候样式修改起来又很麻烦,原声下拉列表options又无法添加样式,也没法做复杂处理,所以使用以下方式实现下拉列表 下拉,收起的icon自行更换 <template> <div > <div class='team-list'> <div class='team-name' @click='nameClick()'> <div>{{message}} &lt

Leviathan_gy的博客 1827

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

vue滚动页面到一定距离(ul--li)

vue滚动页面到一定距离(ul--li)

qq_51196135的博客 1541

Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)

CloudScraper是一个专门用于绕过Cloudflare反机器人保护的Python库,它基于requests库构建,能够处理Cloudflare的5秒盾、WAF和人机验证等防护机制。

数据知道的博客 1万+

DeepSeek掘金——用DeepSeek模型构建AI 代理

在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。人工智能领域正在迅速发展,DeepSeek 的模型代表了智能 AI 代理开发的重大进步。在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。

3860

vue利用事件委托实现按钮互斥,并传递对应的值

效果如下: 事件委托:也称事件代理 原理:事件委托就是利用事件冒泡,指定一个事件处理程序,就可以管理这一类型的所有事件。 应用场景:我有一个ul标签,下面有很多li标签,每个li标签都需要添加事件,难道我们要获取每个li然后在添加事件吗? 这样太浪费内存了,也不利于网页性能优化,我们要尽可能减少dom操作,所以我们能不能只给ul添加点击事件,然后利用事件冒泡,这样每个li标签都有事件了. 效果的...

qq_40544291的博客 1857

redhawk:使用rh_setup.pl产生gsr模板

必须加的option工具会在rh_setup.pl给出提示,按照要求填写即可,另外工具会把所有填写的输入文件和信息放到rh_setup.init文件中,拷贝这个文件可在任何平级运行目录下,直接rh_setup.pl产生gsr以及run sta/dyn/em的脚本。rhsetup.pl -top top_cell_name -vdd_nets VDD 1.2 VDD2 1.2 -vss_nets VSS -frequency 100e6 (100m是默认值)更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1055

vue操作ul中的li,让每个v-show独立互不干扰

Vue的ul中的li互不干扰 问题描述 在做项目的时候,使用vue的v-for循环遍历每一个对象,并给每一个对象绑定事件,但是点击事件的时候,所有元素互相干扰,我做的是回复评论部分,点一下,所有评论的回复框都出来了,很麻烦 解决方案 ...

qq_43054210的博客 2562

樽海鞘优化算法详解:原理、实现与应用

本文详细介绍了樽海鞘优化算法(SSA)的原理、实现与应用。该算法模拟樽海鞘链式群体行为,将优化问题解空间映射为群体移动空间,通过领导者引导和追随者跟随的协作机制寻找最优解。文章从生物特性、数学模型到Python代码实现进行了系统阐述,包括种群初始化、位置更新公式和收敛因子等核心要素,并展示了算法在函数优化等领域的应用潜力。该算法具有结构简单、参数少、实现容易等特点,在多种优化问题上表现良好。

qq_42212808的博客 646

《用 R 探索医药数据科学》目录(持续更新,已超 250 万字)|订阅前说明

我们重磅推出《用 R 探索医药数据科学》专栏!本文作为专栏【订阅后首读】的核心内容,堪称开启学习之旅的 “入门钥匙”,也是整个专栏最关键的一篇指引文。文中不仅完整呈现了专栏 9 大核心篇章 + 问答板块的详细目录,更囊括了订阅后必知的核心要点 —— 从阅读设备、实操工具的使用建议,到学习路径、更新规则的清晰说明,再到问题反馈、感悟记录的实用方法,一站式帮你摸清专栏框架、找准学习方向。建议各位订阅者务必认真阅读、吃透内容,这能让你后续的学习更高效、少走弯!

MD Code 1万+

vue中用 ul 和 li 仿轮播图,可以播放图片和视频 ,亲测可用

话不多说,直接上代码 ( css部分省略 ) <!-- 此处是控制轮播图轮播的图片 --> <img src="@/assets/img/leftBtn.png" alt="" @click="leftMove(index)" class="leftBtn" /> <img src="@/assets/img/rightBtn.png" alt="" @click="rightMove(index)" class="right

qq_40137978的博客 1493

YOLOv11 改进 - 特征融合 | 替换 C3k2 涨点:GELAN 融合 CSP+ELAN 提精度

本文介绍了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)与 YOLOv11 的结合,以解决深度网络数据传输时的信息丢失问题。PGI 能为目标任务提供完整输入信息,计算目标函数以更新网络权重。GELAN 作为轻量级网络架构,由 SPPELAN、ELAN1、RepNCSPELAN4 等模块组成。我们将 GELAN 代码集成进 YOLOv11, 实验脚本显示,结合 GELAN 的 YOLOv11 在 MS COCO 数据集目标检测任务中或有良好表现。

魔改工程师的博客 1242

vue 事件委托

Vue 添加事件的方式很方便,在标签元素上以@click=“fnName” 的形式填加就好,而且还有 .stop 、.prevent 、.self 等修饰符,简单好用。 但是如果li非常多呢?给列表上每个li都添加点击事件是不是不太好? li 添加click <template> <ul> <li class="li" v-for="(m,i) in 5" :key="i" @click="itemFn(m)"></li> </ul

拿回忆下酒 1723

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vue超简单的数据绑定

Vue的声明式编程 在传统的编程中,我们编程是命令式编程,也就是一步一步一行一行写代码,然后执行,就像下面: <script> var value = document.getElemenyById("apple").value; document.getElemenyById("applevalue") = value; </script> 然后呢,在vue中,编程通常为声明式编程,那什么是声明式编程呢?举个如下的例子: 声明式编程本质是语法层面的封装,看起来像是声明

Sobered的博客 970

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Vue(三)——数据绑定

数据绑定 简单文本绑定 最简单也是最常用的数据绑定方法,通过使用{{}}标签来绑定数据: var app = new Vue({ el : '#app', data : { name: 'hengyumo' } }) <span>Hello, this is {{name}}</span> --> Hello, this is hengyumo 通过app...

衡与墨的博客 9446

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue中事件代理的使用

vue事件代理

qq_33404590的博客 1908

Vue绑定自定义属性data, 并且获取数据

data。

小火车况且况且况且的博客 2075

对动态生成的ul-li进行点击事件并更改其样式

1、点击动态的ul-li,给被点击的添加颜色 $(this).addClass(“active”).siblings().removeClass(“active”) ,siblings()是监听除该元素的同级元素

yangzixiansheng的博客 1411

VUE 花路之iview(一)

iview4如何把form表单里的input输入框和点击输入框之后的边框去掉? 这行代码就可以了 ps: 那个小手是鼠标的那个小手 .ivu-input { border: 0; cursor: pointer; // 小手 } .ivu-input:focus { border:none; box-shadow: 0 0 0 2px transparent; // 这个是去除标签的...

嫣子的博客 362

Vue中点击ul获取具体是点击的哪一个li

需求描述 项目是基于Vue的,想要实现的功能是: 1、点击ul就知道具体是哪一个li在点击 2、不给li绑定点击事件,只给ul绑定点击事件,因为li很多,一个个给li绑定事件比较麻烦 3、通过知道是点击的哪一个li,进而进行跳转 项目特殊 这个项目中,li标签下面还嵌套了两个标签,分别是img标签和span标签。后面会说到li嵌套和不嵌套对解决这个问题的影响。 <li> <img src="..." alt="" /> <span>message</span&g

qq_43114230的博客 8335

Vue (十五) --------- UI 组件库

vue UI组件库简介

在森林里麋了鹿 1274

VUE循环列表中的item点击事件

在子组件中抛出事件,传入button特定的item属性 父组件自定义事件,然后通过switch来区分button 如上,即可给循环列表中的item添加事件,本人小白,大牛轻虐,多多交流!

u014717791的博客 2348

Vue------循环多个ul与li,给li增加点击事件增加class不影响其他的li

问题描述 如下图一所示循环了三个div,且每个div中又分辨循环了多个span,给span绑定了点击事件,当点击时其他div里面的class.on也会跟着点击的那个移动,如图二所示。 ...

pppp皮卡丘的博客 1万+

(vue)点击li获取其值:

(vue)点击li获取其值

nyf_unknow的博客 3587

js事件委托 点击ul获取到里面所有li 不再单独for循环

js事件委托 点击ul获取到里面所有li 不再单独给每个li进行for循环遍历

爬楼梯的前端小白的博客 2187
上一篇: 如何使用react脚手架构建项目
下一篇: 防止暴力点击(节流)
春风欲雨
博客等级 码龄7年 68粉丝 106原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值