事件代理/事件委托----点击li弹出对应的下标和内容
<body> <ul> <li>这是第一行</li> <li>这是第二行</li> <li>这是第三行</li> <li>这是第四行</li> <li>这是第五行</li> </ul> </body>
第一种:
var lis=document.getElementsByTagName("li"); for(var i=0;i<lis.length;i++){ lis[i].index=i; // 给每个li赋一个下标 lis[i].onclick=function(){ alert(this.index+"----"+this.innerHTML); }; }
第二种:
var lis=document.getElementsByTagName("li"); for(var i=0;i<lis.length;i++){ (function(n){ lis[n].onclick=function(){ alert(n+this.innerHTML); }; })(i); }
第三种:
var lis=document.getElementsByTagName("li"); for(var i=0;i<lis.length;i++){ lis[i].onclick=function(n){ return function(){ alert(n+lis[n].innerHTML); }; }(i); }
第四种:
$("ul li").click(function(){ var i=$(this).index(); var text=$(this).text(); alert(i+text); });
第五种:(事件代理)
var ul=document.getElementsByTagName("ul")[0]; ul.addEventListener("click",clickHandler); function clickHandler(e){ if(e.target.nodeName!=="LI") return; // 或者写 if(e.target.constructor!==HTMLLIElement) return; var arr=Array.from(ul.children); var index=arr.indexOf(e.target); var text=arr[index].innerHTML; console.log(index+text) }
第六种:(jq事件代理)
$(function(){ $("ul").click(function (e) { var target=$(e.target); var index=target.index(); var text=target.text(); console.log(index+text) }); });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结