博客列表 >事件冒泡,事件代理的原理

事件冒泡,事件代理的原理

P粉116103988
P粉116103988原创
2022年08月05日 17:11:44472浏览

1. 事件冒泡,事件代理的原理是什么,实例演示

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>事件冒泡,代理</title>
  8. </head>
  9. <body>
  10. <button onclick="show()">点击</button>
  11. <script>
  12. function show(){
  13. // 事件对象:
  14. console.log(event);
  15. // 事件主体:
  16. console.log('事件主体:',event.currentTarget);
  17. console.log('事件目标', event.target);
  18. // 无事件委托,二者一样;
  19. console.log(event.currentTarget===event.target);
  20. }
  21. </script>
  22. <ul class="list">
  23. <li data-index="1">item1</li>
  24. <li data-index="2">item2</li>
  25. <li data-index="3">item3</li>
  26. <li data-index="4">item4</li>
  27. <li data-index="5">item5</li>
  28. </ul>
  29. <script>
  30. // let items= document.querySelectorAll('li');
  31. // // items.forEach((item)=>(item.onclick=()=>console.log(event.currentTarget)));
  32. // items.forEach(
  33. // function (item){
  34. // item.onclick = function(){
  35. // console.log(event.currentTarget);
  36. // // 阻止冒泡 :
  37. // event.stopPropagation();
  38. // }
  39. // }
  40. // );
  41. // 事件冒泡:就是父级如果和子级有同样的事件,那么子级的事件会传递到父级
  42. // 事件冒泡的关键点:1,要有父级 2.事件相同:
  43. // document.querySelector('ul').onclick = () => console.log('li的父级ul',event.currentTarget);
  44. // document.body.onclick = () => console.log('ul的父级body:';event.currentTarget);
  45. // window.onclick = () => console.log(event.currentTarget);
  46. // 事件代理委托: 将子元素的事件委托到父级触发
  47. let ul = document.querySelector('ul');
  48. ul.onclick = function (){
  49. // 事件主体就是父级:event.currentTarget:
  50. // 事件目标就是子级:event.target:
  51. // event.target.dataset.index可以查看绑定的是哪一个子级
  52. console.log(event.target,event.target.dataset.index);
  53. console.log(event.currentTarget);
  54. // 当有委托的情况下二者不一样
  55. console.log(event.target === event.currentTarget);
  56. };
  57. </script>
  58. </body>
  59. </html>

2. 自选5个课堂中未提及的字符串API,进行演示(MDN)

  1. <script>
  2. let str = 'PHP中文网';
  3. let str2 = '你好 朱老师';
  4. let str3 = ' 135 ';
  5. let str4 = 'HelloWorld';
  6. let str5 = 'helloPhp';
  7. // console.log(str);
  8. // console.log(str.length) ;
  9. // console.log(str[0],str[1],str[2]);
  10. // console.log(str.charAt(1),str[1]);
  11. // console.log(str.indexOf('中'));
  12. // console.log(str.search('中'));
  13. // console.log(str.concat('php.cn'));
  14. // console.log(str.replace('中文网','.cn'));
  15. // console.log(str.slice(0,2));
  16. // console.log(str.substr(0,4));
  17. // console.log(str.substr(-3,2));
  18. // 字符串的拼接:concat()
  19. console.log(str.concat(str2));
  20. // 从后面检索字符串:lastIndexOF:
  21. console.log(str2.lastIndexOf('老'));
  22. // 截取字符串:substring
  23. console.log(str2.substring(0,5));
  24. // 将字符串拆开为数组:split
  25. console.log(str.split(str[1]));
  26. // 去除字符串中的空白符:trim
  27. console.log(str2+str3);
  28. console.log(str2 + str3.trim());
  29. // 大小写转换:toUpperCase(),toLowerCase()
  30. // 全转为大写:
  31. console.log(str4.toUpperCase());
  32. // 全转为小写:
  33. console.log(str4.toLocaleLowerCase());
  34. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议