如何理解jquery事件冒泡

 我来答
阿巴巴fGw
2018-06-25 · TA获得超过677个赞
知道小有建树答主
回答量:1470
采纳率:84%
帮助的人:508万
展开全部

事件冒泡(IE提出):

从最具体的元素接收,然后逐级向上传播到较为不具体的节点

事件捕获:

从较为不具体的节点接收,然后逐级向下到最具体的元素。

PS:假设有一个文档,节点为 html→body→div→button 。

事件冒泡的传播顺序是:button→div→body→html→document→window,

事件捕获的传播顺序是:window→document→html→body→div→button。

具体是不是这样我忘了,反正两个是相反的。

举个例子:

事件冒泡:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<script>
function body_click() {
alert('Body被点击了')
}
function div_click() {
alert('Div被点击了')
}
function button_click() {
alert('Button被点击了')
}
</script>
  </head>
  <body onclick="body_click()">

<div onclick="div_click()">
<button onclick="button_click()">事件冒泡</button>
</div>
  </body>
</html>

点击之后会依次弹窗(注意顺序):Button被点击了、Div被点击了、Body被点击了。(从具体的节点传播至最不具体的节点)

然后是事件捕获:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<script>
window.onload = function() {
document.getElementById('btn').addEventListener('click',function (e) {
alert('Button被点击了')
},true);
document.getElementById('div').addEventListener('click',function (e) {
alert('Div被点击了')
},true);
document.getElementById('body').addEventListener('click',function(e) {
alert('Body被点击了')
},true);
}
</script>
  </head>
  <body id="body">
<div id="div">
<button id="btn">事件捕获</button>
</div>
  </body>
</html>

点击之后会依次弹窗(注意顺序):Body被点击了、Div被点击了、Button被点击了。(从不具体的节点传播至最具体的节点)

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式