事件绑定.js 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. function bindEvent(ele, type, selector, fn) {
  2. if(!fn) {
  3. fn = selector
  4. selector = null
  5. }
  6. ele.addEventListener(type, function(event){
  7. const target = event.target
  8. if(selector){
  9. if(target.matches(selector)){
  10. fn.call(target, event)
  11. }
  12. }
  13. else {
  14. fn.call(target, event)
  15. }
  16. })
  17. }
  18. const btn1 = document.getElementById('btn1')
  19. bindEvent(btn1, 'click', function(event){
  20. alert(this.innderHTML)
  21. event.preventDefault()
  22. })
  23. const body = document.body
  24. bindEvent(body, 'click', function(event){
  25. console.log('取消')
  26. })
  27. const p1 = document.getElementById('p1')
  28. bindEvent(p1, 'click', function(event){
  29. console.log('激活')
  30. event.stopPropagation() // 阻止冒泡
  31. })
  32. // const div2 = document.getElementById('div2')
  33. // binEvent(div2, 'click', function(event){
  34. // console.log('div2 clicked')
  35. // console.log(event.target)
  36. // })
  37. const div3 = document.getElementById('div3')
  38. bindEvent(div3, 'click', function(event){
  39. event.preventDefault()
  40. alert(this.innerHTML)
  41. })