文章目录

      • 事件的委派
      • 事件的绑定
      • 事件的传播
      • 拖拽

 

事件的委派

事件的委派:指将事件统一绑定给元素的共同的祖先元素,这样当后代元素上的事件触发时,会一直冒泡到祖先元素,从而通过祖先元素的响应函数来处理事件。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
      window.onload = function () {
        var u1 = document.getElementById('u1')
        var btn01 = document.getElementById('btn01')
        btn01.onclick = function () {
          var li = document.createElement('li') // 创建一个li
          li.innerHTML = "<a href='javascript:;' class='link'>新建的超链接</a>"
          u1.appendChild(li) // 将li添加到ul中
        }
        var allA = document.getElementsByTagName('a') // 获取所有的a
        u1.onclick = function (envent) {
          event = event || window.event
          if (envent.target.className == 'link') {
            alert('我是ul的单击响应函数')
          }
        }
      }
    </script>
  </head>
  <body>
    <button id="btn01">添加超链接</button>
    <ul id="u1" style="background-color: #bfa">
      <li>
        <p>我是p元素</p>
      </li>
      <li><a href="javascript:;" class="link">超链接一</a></li>
      <li><a href="javascript:;" class="link">超链接二</a></li>
      <li><a href="javascript:;" class="link">超链接三</a></li>
    </ul>
  </body>
</html>

事件的绑定

“对象.事件 = 函数”的形式绑定响应函数,不能绑定多个,如果绑定了多个,后面的会覆盖前面的

addEventListener():为元素绑定响应函数,多个绑定的函数按顺序执行

事件的传播

传播阶段

捕获阶段:在捕获阶段时从最外层的祖先元素,向目标元素进行事件的捕获,但是默认此时不会触发事件。
目标阶段:事件捕获到目标元素,捕获结束开始在目标元素上触发事件。
冒泡阶段:事件从目标元素向他的祖先元素传递,依次触发祖先元素上的事件。

拖拽

拖拽的流程:

当鼠标在被拖拽元素上按下时,开始拖拽:onmousedown。
当鼠标移动时被拖拽元素跟随鼠标移动:onmousemove。
当鼠标松开时,被拖拽元素固定在当前位置:onmouseup。