首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >事件的jQuery变更顺序

事件的jQuery变更顺序
EN

Stack Overflow用户
提问于 2018-09-20 17:34:43
回答 2查看 76关注 0票数 1

有办法改变jQuery事件发生的顺序吗?我还没有找到一个明确的答案。

我有一个外型和一个内层。每当您单击内部div时,内部div事件首先会触发。然后是外部div事件,即使一个事件是在之前和之后创建的。

https://jsfiddle.net/nLvaehky/5/

代码语言:javascript
运行
复制
$("#outerDiv").on("mousedown", function() {
    alert('outer div clicked!');
});

$("#innerDiv").on("mousedown", function() {
    alert('inner div clicked!');
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-20 17:42:37

更新小提琴

您需要使用stopPropagation()阻止事件冒泡到父div:

代码语言:javascript
运行
复制
$("#outerDiv").on("mousedown", function() {
  alert('outer div clicked!');
});


$("#innerDiv").on("mousedown", function(e) {
  e.stopPropagation();

  alert('inner div clicked!');
});
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outerDiv" style="background-color:blue;">
  <br /><br /><br /><br />
  <br /><br /><br /><br />
  <div id="innerDiv" style="background-color:green;">
    <br /><br /><br /><br />
  </div>
  <br /><br /><br /><br />
</div>

票数 3
EN

Stack Overflow用户

发布于 2018-09-20 17:55:10

执行的顺序取决于如何将它们放在js文件中(从上到下,从左到右)。但在本例中,它首先触发innerDiv事件,因为这是您单击的元素。如果您将$("#outerDiv").on("mousedown" ...)放在第一位并不重要。

但是它执行outerDivouterDiv事件,因为单击在DOM树中向上传播,所以如果您想停止传播,可以使用"Zakaria“应答中提到的stopPropagation()事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52430433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档