javascript事件委托,事件代理,元素绑定多个事件之练习篇
<ul id="parent-list">
<li id="post-1">item1</li>
<li id="post-2">item2</li>
<li id="post-3">item3</li>
<li id="post-4">item4</li>
<li id="post-5">item5</li>
<li id="post-6">item6</li>
</ul>
<script>
var nav = document.getElementById("parent-list");
var li = nav.getElementsByTagName("li");
//方法一
/*var len = li.length;
for(var i=0;i<len;i++){
li[i].index = i;
li[i].onclick = function(e){
alert(this.index+" & "+this.innerHTML+" & " +e.target.id+ " & " +e.target.tagName);
}
}*/
//方法二
/*nav.onclick = function(){
var e = arguments[0] || window.event,
target = e.srcElement ? e.srcElement : e.target;
alert(target.innerHTML);
}*/
//获取指定属性名的属性值
/*var len = li.length;
for(var i=0;i<len;i++){
//alert(li[i].getAttribute("id"));
li[i].onclick = function(){
alert(this.getAttribute("id"));
}
}*/
// 获取父节点,并为它添加一个click事件
document.getElementById("parent-list").addEventListener("click",function(e){
// 检查事件源e.targe是否为Li
if(e.target && e.target.nodeName =="LI"){
console.log("List item",e.target.id,"was clicked!");
}
},false)
</script>
<ul id="myLinks">
<li id="goSomewhere">go somewhere</li>
<li id="doSomething">do something</li>
<li id="sayHi">say hi</li>
</ul>
<script>
//方法一,传统做法
/*var item1 = document.getElementById("goSomewhere");
var item2 = document.getElementById("doSomething");
var item3 = document.getElementById("sayHi");
EventUtil.addHandler(item1,"click",function(e){
location.href = "http://www.baidu.com";
});
EventUtil.addHandler(item2,"click",function(e){
document.title = "I changed the title";
});
EventUtil.addHandler(item3,"click",function(e){
alert("say hi");
});*/
//方法二,事件委托
var nav = document.getElementById("myLinks");
nav.onclick = function(e){
e = e || window.event;
var target = e.target || e.srcElement;
//获取每个LI元素的内容
//http://www.2cto.com/kf/201304/204581.html
//http://www.cnblogs.com/rubylouvre/archive/2009/08/09/1542174.html
/*if(target.tagName == "LI"){
alert(target.innerHTML);
}*/
//事件委托
switch(target.id){
case "goSomewhere":
location.href = "http://www.baidu.com";
break;
case "doSomething":
document.title = "I changed the title";
break;
case "sayHi":
alert("say hi");
break;
}
}
</script>
<div id="evt">绑定多个事件</div>
<script>
var item = document.getElementById("evt");
item.addEventListener("click",function(){
alert("first");
},false);
item.addEventListener("click",function(){
alert("second");
},false);
</script>
javascript事件委托,事件代理,元素绑定多个事件之练习篇的更多相关文章
- 一个DOM元素绑定多个事件时,先执行冒泡还是捕获
绑定在被点击元素的事件是按照代码顺序发生,其他元素通过冒泡或者捕获“感知”的事件,按照W3C的标准,先发生捕获事件,后发生冒泡事件.所有事件的顺序是:其他元素捕获阶段事件 -> 本元素代码顺序事 ...
- Js 事件委托 解决动态元素不能click点击的问题
参考教程地址 https://blog.csdn.net/xiaolong20081/article/details/79792137 不想写了.直接看上面就行 采用事件委托或代理方式绑定 $(doc ...
- 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存在影响
原文地址 背景 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当a标签内部存在嵌套时, 父元素a标签的href默认行为以及子元素绑定的click事件的响应之间存 ...
- JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置
日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. 1.使用firefox调试 我们可以使用firefox的debug工 ...
- jq给同一元素绑定多个事件
$(".aa").on("click",function(){ alert(1) }).on("mousemove",function(){ ...
- 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
一.事件冒泡定义 事件冒泡是指在一个对象触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那 ...
- 浏览器中开发人员工具快速找到dom元素绑定那些JS事件
在web开发过程中难免会遇到让程序员去修改一些js代码东西,例如js的ajax和php等语言的交互等,在这其中你不得不了解点js的事件触发,且随着js的盛行各种插件的事件让程序员眼花缭乱,所以借助一个 ...
- JS事件委托(代理)学习笔记
在开始之前我们先来熟悉一下HTML DOM addEventListener()方法,该方法用于向指定元素添加事件句柄.语法说明如下图所示: 主要想强调一下第三个参数useCapture,默认值为fa ...
- html如何点击子元素事件而不触发父元素的点击事件——阻止冒泡
如果子元素和父元素都有点击事件,会出现点击事件冒泡的情况. 1.如何避免冒泡: html: <html> <head></head> <body> &l ...
随机推荐
- struts2上传图片
在WEB-INF下新建一个content目录,建立一个upload.jsp <%@ page contentType="text/html; charset=UTF-8" l ...
- docker学习笔记12:Dockerfile 指令 ENTRYPOINT介绍
本文介绍Dockerfile的 ENTRYPOINT指令的含义. 先回顾下CMD指令的含义,CMD指令可以指定容器启动时要执行的命令,但它可以被docker run命令的参数覆盖掉. ENTRYPOI ...
- [转]如何申请和管理一个sourceforge项目
假如你没有贡献免费源代码的想法,就不用继续读本文了.:) 如果读者的e文不错,作者建议你直接阅读sourceforge的 howto文档,他们整理得非常周到详实.本文只是作者的使用经验,也许可以给与作 ...
- lua序列化table表到文件中
先上代码 function luautil.serialize(t, sort_parent, sort_child) local mark={} local assign={} local func ...
- 《HTML 5网页开发实例具体解释》文件夹
第一篇 从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的总体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1 你是不是真的 ...
- hdu1248
Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. 死亡 ...
- RelativeLayout的一些感想
1.如果只是是3-4个线性,则可以考虑RelativeLayout;多于等于5个还是尽量考虑LinearLayout好 补充:如果要把RelativeLayout作为线性布局的话,可以采用不断设置be ...
- 利用git下载skia库
1.准备好cygwin或者gitbash(github下载) 2.进入进入https://android.googlesource.com/,搜索skia,进入. 3.进入后最上面会显示下载方法:gi ...
- 软件project师的属性与发展
工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...
- Google C++ style guide——命名约定
1.通过命名规则 函数命名.变量命名.文件命名应具有描写叙述性. 类型和变量应该是名词,函数名能够用"命令性"动词. 2.文件命名 文件名称所有小写,能够包括下划线(_)或者断线( ...