JavaScript中的事件委托及好处

前端之家收集整理的这篇文章主要介绍了JavaScript中的事件委托及好处前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

通俗的讲,事件就是onclick,onmouSEOver,onmouSEOut,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。

也就是:利用冒泡的原理,把事件加到父级上,触发执行效果

好处呢:1,提高性能

我们可以看一个例子:需要触发每个li来改变他们的背景颜色。

aaaaaaaa
  • bbbbbbbb
  • cccccccc
  • window.onload = function(){ var oUl = document.getElementById("ul"); var aLi = oUl.getElementsByTagName("li"); for(var i=0; iSEOver = function(){ this.style.background = "red"; } aLi[i].onmouSEOut = function(){ this.style.background = ""; } } }

    这样我们就可以做到li上面添加鼠标事件。

    但是如果说我们可能有很多个li用for循环的话就比较影响性能

    下面我们可以用事件委托的方式来实现这样的效果。html不变

    标签名 */ 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

    如:

      aaaaaaaa
    • bbbbbbbb
    • cccccccc

    不用事件委托我们会这样做:

    SEOver = 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不变

    SEOver = 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:

    如同在我们用微博中,新发微博照样有之前的鼠标事件。

    以上所述是小编给大家介绍的JavaScript中的事件委托及好处。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

    原文链接:https://www.f2er.com/js/47316.html

    猜你在找的JavaScript相关文章