目录
  1. 1. 事件案例
  2. 2. 事件委托(委派/代理)
    1. 2.1. 事件委托的双方
    2. 2.2. 使用事件委托的好处
    3. 2.3. jQuery的事件委托API
JQ它也会事件委托

事件案例

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>事件委托</title>
</head>

<body>
<ul>
<li>1111</li>
<li>2222</li>
<li>3333</li>
<li>4444</li>
</ul>

<li>22222</li>
<br>
<button id="btn1">添加新的li</button>
<button id="btn2">删除ul上的事件委托的监听器</button>

<script src="js/jquery-1.10.1.js"></script>
<script>
// 设置事件委托
$('ul').delegate('li', 'click', function () {
// console.log(this)
this.style.background = 'red'
})

$('#btn1').click(function () {
$('ul').append('<li>新增的li....</li>')
})

$('#btn2').click(function () {
// 移除事件委托
$('ul').undelegate('click')
})

</script>
</body>
</html>

事件委托(委派/代理)

  • 将多个子元素(li)的事件监听委托给父辈元素(ul)处理
  • 监听回调是加在了父辈元素上
  • 当操作任何一个子元素(li)时, 事件会冒泡到父辈元素(ul)
  • 父辈元素不会直接处理事件, 而是根据event.target得到发生事件的子元素(li), 通过这个子元素调用事件回调函数

事件委托的双方

  • 委托方: 业主 li
  • 被委托方: 中介 ul

使用事件委托的好处

  • 添加新的子元素, 自动有事件响应处理
  • 减少事件监听的数量: n==>1

jQuery的事件委托API

  • 设置事件委托: $(parentSelector).delegate(childrenSelector, eventName, callback)
  • 移除事件委托: $(parentSelector).undelegate(eventName)
文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-05/24/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/JQ/JQ%E5%AE%83%E4%B9%9F%E4%BC%9A%E4%BA%8B%E4%BB%B6%E5%A7%94%E6%89%98/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论