• 当多个对象需要处理同一请求时,可以将这些请求交给另一个对象统一处理

      1. window.onload = function () {
      2. var aLis = document.getElementsByTagName("li");
      3. for (var i = 0; i < aLis.length; i++) {
      4. aLis[i].onclick = function(e) {
      5. var e = e || window.event;
      6. var target = e.target || e.srcElement;
      7. console.log(target.innerHTML);
      8. }
      9. }
      10. /* 上面写法存在的问题:
      11. 1.需要每个li绑定不同的事件,会造成性能的损失和内存的占用
      12. 2.在ul中,新添加的li会没有onclick事件
      13. */
      14. // 使用事件委托,委托给ul
      15. var oUl = document.querySelector('#uli');
      16. oUl.onclick = function(e) {
      17. var e = e || window.event;
      18. var target = e.target || e.srcElement;
      19. if(target.nodeName.toLowerCase() === 'li') {
      20. console.log(target.innerHTML);
      21. }
      22. }
      23. }