茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JavaScript中的事件委托及好處
    來源:易賢網(wǎng) 閱讀:1323 次 日期:2016-07-28 14:53:23
    溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript中的事件委托及好處”,方便廣大網(wǎng)友查閱!

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

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

    好處呢:1,提高性能。

    我們可以看一個(gè)例子:需要觸發(fā)每個(gè)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上面添加鼠標(biāo)事件。

    但是如果說我們可能有很多個(gè)li用for循環(huán)的話就比較影響性能。

    下面我們可以用事件委托的方式來實(shí)現(xiàn)這樣的效果。html不變

    window.onload = function(){

    var oUl = document.getElementById("ul");

    var aLi = oUl.getElementsByTagName("li");

    /*

    這里要用到事件源:event 對象,事件源,不管在哪個(gè)事件中,只要你操作的那個(gè)元素就是事件源。

    ie:window.event.srcElement

    標(biāo)準(zhǔn)下:event.target

    nodeName:找到元素的標(biāo)簽名

    */

    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,新添加的元素還會(huì)有之前的事件。

    我們還拿這個(gè)例子看,但是我們要做動(dòng)態(tài)的添加li。點(diǎn)擊button動(dòng)態(tài)添加li

    如:

    <input type="button" id="btn" />

    <ul id="ul">

    <li>aaaaaaaa</li>

    <li>bbbbbbbb</li>

    <li>cccccccc</li>

    </ul> 

    不用事件委托我們會(huì)這樣做:

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

    }

    }

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

    因?yàn)辄c(diǎn)擊添加的時(shí)候for循環(huán)已經(jīng)執(zhí)行完畢。

    那么我們用事件委托的方式來做。就是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);

    }

    }

    ok:

    如同在我們用微博中,新發(fā)微博照樣有之前的鼠標(biāo)事件。

    以上所述是小編給大家介紹的JavaScript中的事件委托及好處,希望對大家有所幫助

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:JavaScript中的事件委托及好處
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)