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

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

js中的事件委托總結

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

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);	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 羞羞答答影院 | 亚洲综合一区在线观看 | 国产盼盼私拍福利视频99 | 视频一区二区不卡 | 在线看免费的a | 成人免费网站在线观看 | 鲁久久| 香蕉成人在线观看 | 爱草在线 | 欧美精品色精品一区二区三区 | 国产精品久久久久久久久久久久久久久久 | 国产999视频在线观看 | 免费黄色小网站 | 羞羞视频在线免费 | 欧美亚洲国产成人综合在线 | 日本在线观看中文字幕 | 久久影城 | 国产无遮挡一区二区三区毛片日本 | 3xxx | 久久精品中文字幕一区 | 久久免费视频7 | 天天透天天狠天天爱综合97 | 牛牛热这里只有精品 | av之家在线观看 | 色呦呦一区二区三区 | 激情视频在线播放 | 99这里有精品 | 国产小视频一区 | 2021国产精品视频 | 久久国产免费 | 91中文字幕在线观看 | 黄色片网站免费 | 成人福利在线免费观看 | 91九色蝌蚪国产 | 精品一区二区三区中文字幕老牛 | 暴力肉体进入hdxxxx0 | 天天看天天摸天天操 | 亚洲精品一区中文字幕 | 伊人网站| 久久91久久久久麻豆精品 | 精品999www|