麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

js中的事件委托總結

2019-11-14 09:28:34
字體:
來源:轉載
供稿:網友

1,什么是事件委托:通俗的講,事件就是onclick,onmouSEOver,onmouseout,等就是事件,委托呢,就是讓別人來做,這個事件本來是加在某些元素上的,然而你卻加到別人身上來做,完成這個事件。

也就是:利用冒泡的原理,把事件加到父級上,觸發執行效果。

好處呢:1,提高性能。

我們可以看一個例子:需要觸發每個li來改變他們的背景顏色。

<ul id="ul">	<li>aaaaaaaa</li>	<li>bbbbbbbb</li>	<li>cccccccc</li></ul>
window.onload = function(){	var oUl = document.getElementById("ul");	var aLi = oUl.getElementsByTagName("li");	for(var i=0; i<aLi.length; i++){		aLi[i].onmouseover = function(){			this.style.background = "red";		}		aLi[i].onmouseout = function(){			this.style.background = "";		}	}}

 這樣我們就可以做到li上面添加鼠標事件。

但是如果說我們可能有很多個li用for循環的話就比較影響性能。

下面我們可以用事件委托的方式來實現這樣的效果。html不變

window.onload = function(){	var oUl = document.getElementById("ul");	var aLi = oUl.getElementsByTagName("li");/*這里要用到事件源:event 對象,事件源,不管在哪個事件中,只要你操作的那個元素就是事件源。ie:window.event.srcElement標準下:event.targetnodeName:找到元素的標簽名*/	oUl.onmouseover = function(ev){		var ev = ev || window.event;		var target = ev.target || ev.srcElement;		//alert(target.innerHTML);		if(target.nodeName.toLowerCase() == "li"){		target.style.background = "red";		}	}	oUl.onmouseout = function(ev){		var ev = ev || window.event;		var target = ev.target || ev.srcElement;		//alert(target.innerHTML);		if(target.nodeName.toLowerCase() == "li"){		target.style.background = "";		}	}}

好處2,新添加的元素還會有之前的事件。

我們還拿這個例子看,但是我們要做動態的添加li。點擊button動態添加li

如:

<input type="button" id="btn" /><ul id="ul">	<li>aaaaaaaa</li>	<li>bbbbbbbb</li>	<li>cccccccc</li></ul>

 不用事件委托我們會這樣做:

window.onload = function(){	var oUl = document.getElementById("ul");	var aLi = oUl.getElementsByTagName("li");	var oBtn = document.getElementById("btn");	var iNow = 4;	for(var i=0; i<aLi.length; i++){		aLi[i].onmouseover = function(){			this.style.background = "red";		}		aLi[i].onmouseout = function(){			this.style.background = "";		}	}	oBtn.onclick = function(){		iNow ++;		var oLi = document.createElement("li");		oLi.innerHTML = 1111 *iNow;		oUl.appendChild(oLi);	}	}

 這樣做我們可以看到點擊按鈕新加的li上面沒有鼠標移入事件來改變他們的背景顏色。

因為點擊添加的時候for循環已經執行完畢。

那么我們用事件委托的方式來做。就是html不變

window.onload = function(){	var oUl = document.getElementById("ul");	var aLi = oUl.getElementsByTagName("li");	var oBtn = document.getElementById("btn");	var iNow = 4;	oUl.onmouseover = function(ev){		var ev = ev || window.event;		var target = ev.target || ev.srcElement;		//alert(target.innerHTML);		if(target.nodeName.toLowerCase() == "li"){		target.style.background = "red";		}	}	oUl.onmouseout = function(ev){		var ev = ev || window.event;		var target = ev.target || ev.srcElement;		//alert(target.innerHTML);		if(target.nodeName.toLowerCase() == "li"){		target.style.background = "";		}	}	oBtn.onclick = function(){		iNow ++;		var oLi = document.createElement("li");		oLi.innerHTML = 1111 *iNow;		oUl.appendChild(oLi);	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产午夜亚洲精品午夜鲁丝片 | 久久久大片 | 在线播放免费人成毛片乱码 | 91九色视频在线播放 | 久久不雅视频 | 青青草成人影视 | 斗破苍穹在线免费 | 一区在线免费视频 | 成人羞羞网站入口 | 欧美精品a∨在线观看不卡 午夜精品影院 | 国产69精品久久久久久 | 欧美精品99 | av在线免费电影 | 中文亚洲视频 | 天堂成人一区二区三区 | 亚洲一区二区在线免费 | 久久精品艹 | 日本欧美一区二区 | 天天色综合2 | 久久精品一级 | 国产免费看片 | 污片在线观看视频 | 日韩1区| 欧美久久久一区二区三区 | 天天透天天狠天天爱综合97 | 毛毛片在线看 | 爱草在线 | 久久久久久久久成人 | 成年免费观看视频 | 精品国产一区二区亚洲人成毛片 | 一区二区三区手机在线观看 | 精品二区在线观看 | 色操网| 久久国产精品一区 | 久久精品久久久久 | 日韩精品久久久久久久九岛 | 久久综合九色综合久久久精品综合 | 亚洲最大中文字幕 | 亚洲性综合网 | 成人毛片免费看 | 中文字幕在线观看www |