18.事件委托(重要)???利用了冒泡的思路解决问题(DOM0级只支持冒泡,DOM2级支持冒泡和捕获)

事件委托:
概念:把本该属于子元素的事件绑定在父元素(父级元素)上,即把子元素的事件委托给父元素,这就是事件委托。
事件委托的原理
利用冒泡的思路(当子元素的某种类型的事件被触发时,父(级)元素同类型的事件也会被触发,),同时结合event对象的target属性,能够找到真正的事件源(子元素)。
事件委托的优点:
1)、对于未来会添加进来的元素也会有对应事件触发。
2)、不用绑定很多事件,即不用给每个子元素都绑定事件。只需要绑定在父级元素即可。节约了内存。

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>留言功能</title>
</head>
<body>
	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
	</ul>
	<input id="btn01" type="button" value="添加li" />
</body>
</html>
<script type="text/javascript" src="js/eventTools.js"></script>
<script type="text/javascript">

//事件委托:
//概念:把本该属于子元素的事件绑定在父元素(父级元素)上,即把子元素的事件委托给父元素,这就是事件委托
//事件委托的原理:利用冒泡的思路(当子元素的某种类型的事件被触发时,父(级)元素同类型的事件也会被触发,),
//               同时结合event对象的target属性,能够找到真正的事件源(子元素)。
//事件委托的优点:
//1)、对于未来会添加进来的元素也会有对应事件触发。
//2)、不用绑定很多事件,即不用给每个子元素都绑定事件。只需要绑定在父级元素即可。节约了内存。
window.onload = function(){
	/*
	var lis = $("li");
	//给每个li增加onclick事件
	for(var i=0;i<lis.length;i++){
		lis[i].onclick = function(){
			alert(this.innerHTML);
		}
	}
	*/
	//利用事件冒泡,把每个li的onclick事件冒泡到它的父元素ul上
	$("ul")[0].onclick = function(event){
		var evt = event || window.event;
		if(evt.target.tagName.toLowerCase()=="li"){
			alert(evt.target.innerHTML);
		}
	}
	
	var i=4;
	$("#btn01").onclick = function(){
		var liDom = document.createElement("li");
		liDom.innerHTML ="第"+(++i)+"行";
		$("ul")[0].appendChild(liDom);		
	}
}


//封装一个获取页面元素的函数
//参数:字符串
//返回值:
//     如果字符串的第一个字符是#,那么就把参数当作id使用,即使用getElementById获取一个元素
//     如果字符串的第一个字符是.,那么就把参数当作class使用,即使用getElementsByClassName获取若干个元素
//     如果字符串的第一个字符既不是#,也不是. ,那么就把参数当作标签名使用,即使用getElementsByTagName获取若干个元素
function $(str){
	if(str.charAt(0)=="#"){
		return document.getElementById(str.substring(1));
	}else if(str.charAt(0)=="."){
		return document.getElementsByClassName(str.substring(1));
	}else{
		return document.getElementsByTagName(str);
	}
}


</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值