文档章节

js 事件委托

appleZ
 appleZ
发布于 2015/04/13 10:32
字数 189
阅读 30
收藏 0

js事件流分为冒泡捕捉两种方向,记录一个事件委托片段,注意兼容性:

html

<html>
<style>
ul{
	list-style:none;
}
</style>
<body>
	<ul id="ulele"><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li><li>d</li></ul>
</body>
</html>

js

var target = document.getElementById("ulele");
EventListener = {
	add:function(target, type, handler){
		if(document.addEventListener){
			target.addEventListener(type, handler, false);
		}else if(document.attachEvent){
			target.attachEvent("on" + type, handler);
		}else{
			target["on" + type] = handler;
		}
	},
	remove:function(target, type, handler){
		if(document.removeEventListener){
			target.removeEventListener(type, handler, false);
		}else if(document.detachEvent){
			target.detachEvent("on" + type, handler);
		}else{
			target["on" + type] = null;
		}
	}
}
EventListener.add(target, "click", clickHandler);
//EventListener.removeListener(target, "click", clickHandler);
function clickHandler(e){
	var e = e || event, target = e.target || e.srcElement;
	
	/* if (e.preventDefault) { e.preventDefault();//IE以外 } else { e.returnValue = false;} return false 只能取消元素 stopPropagation() cancelBubble()*/
	
	if(target.nodeName.toLowerCase() == "li"){
		alert("pageX:"+ (e.pageX || e.x)  + ";pageY:" + (e.pageY || e.y));
	}
}

 

© 著作权归作者所有

共有 人打赏支持
appleZ
粉丝 1
博文 38
码字总数 9774
作品 0
深圳
私信 提问
Javascript的事件模型和Promise实现

1. Javascript的运行时模型——事件循环 JS的运行时是个单线程的运行时,它不像其他编程语言,比如C++,Java,C#这些可以进行多线程操作的语言。当它执行一个函数时,它只会一条路走到黑,不...

远方无风
07/12
0
0
javascript事件绑定的疑问

假如我一个web页面有很多事件需要监听,我之前的做法是一个个去为每个元素写onclick代码,这样很费事。后来我知道有一种办法叫做事件委托,用着很方便。 我的问题是:真正工作中,是不是经常...

水牛叔叔
2012/10/31
234
5
腾讯web前端开发工程师笔试题及答案

腾讯web前端开发工程师笔试题及答案 1、 如何实现事件委托? 首先要知道什么是事件委托。 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但...

至简6
2014/07/29
0
0
《高性能javascript》 领悟随笔之-------DOM编程篇(二)

《高性能javascript》 领悟随笔之-------DOM编程篇二   序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整个页面文档。DOM编程性能一直以来都...

grootzhang
2016/05/10
0
0
JS和JQ的event对象对比和应用

currentTarget 事件冒泡阶段所在的DOM target, originalTarget原始的DOM 代码测试: 结果分析: 总结: js的event参数中,不管是, , 都是指向第一个触发事件的元素(还没冒泡),而在click事...

前端届的科比
2014/08/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 这就是不要女朋友的理由

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @狄安娜的猫 :分享丁家鑫的单曲《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 手机党少年们想听歌,请...

小小编辑
30分钟前
160
7
CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
4
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
5
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部