封装一个通用的事件绑定函数

小灰灰 2022-12-18 06:54 263阅读 0赞

通过上节案例来展开
案例
需要点击每个a,来。弹出他们的内容

  1. <div id="div3">
  2. <a href="#">a1</a><br>
  3. <a href="#">a2</a><br>
  4. <a href="#">a3</a><br>
  5. <a href="#">a4</a><br>
  6. <button id='btn1'>加载更多...</button>
  7. </div>
  8. // 封装通用的事件绑定函数
  9. function bindEvent(elem, type, fn) {
  10. elem.addEventListener(type, fn)
  11. }
  12. //获取父元素
  13. const fu = document.getElementById('div3')
  14. bindEvent(fu, 'click', function (event) {
  15. // console.log(event.target) // 获取触发的元素
  16. let target=event.target
  17. event.preventDefault() // 阻止默认行为
  18. //过滤符合条件的子元素,主要是过滤掉 加载更多
  19. if(target.nodeName.toLowerCase()==="A"){
  20. alert(target.innerHTML;
  21. }
  22. })

在这里插入图片描述

以上事件绑定函数bindEvent过与简单,我们需要进一步封装,减少使用时的代码:

  1. // 通用的事件绑定函数
  2. // function bindEvent(elem, type, fn) {
  3. // elem.addEventListener(type, fn)
  4. // }
  5. function bindEvent(elem, type, selector, fn) {
  6. //首先判断有没有第四个参数
  7. if (fn == null) {
  8. fn = selector //没有第四个参数,第三个参数即为事件函数
  9. selector = null //第三个指向空
  10. }
  11. elem.addEventListener(type, event => {
  12. const target = event.target
  13. if (selector) { //参数三判断 普通绑定 和代理绑定
  14. // 代理绑定
  15. if (target.matches(selector)) {
  16. /* let result = element.matches(selectorString); result 的值为 true 或 false. selectorString 是个css选择器字符串. */
  17. fn.call(target, event)
  18. }
  19. } else {
  20. // 普通绑定
  21. fn.call(target, event)
  22. }
  23. })
  24. }
  25. // 普通绑定
  26. const btn1 = document.getElementById('btn1')
  27. bindEvent(btn1, 'click', function (event) {
  28. // console.log(event.target) // 获取触发的元素
  29. event.preventDefault() // 阻止默认行为
  30. alert(this.innerHTML)
  31. })
  32. // 代理绑定
  33. const div3 = document.getElementById('div3')
  34. bindEvent(div3, 'click', 'a', function (event) {
  35. event.preventDefault()
  36. alert(this.innerHTML)
  37. })

发表评论

表情:
评论列表 (有 0 条评论,263人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Tkinter事件

    Tkinter提供一个强大的机制可以让你自由地处理事件,对于每个组件来说,可以通过bind()方法将函数或者方法绑定到具体的事件上,当被触发的事件满足该事件绑定的事件时,Tki

    相关 jacascript事件

    一、  使用对象.事件=函数的形式绑定响应函数         它只能同时为一个元素的一个事件绑定一一个响应函数,不能绑定多个,如果绑定了多个,则后边会覆盖掉前边的