jQuery-事件传播

时间:2020-02-23 14:46:07  来源:igfitidea点击:

在本教程中,我们将学习有关jQuery中事件传播的信息。

什么是事件传播?

顾名思义,它是事件从一个元素(子元素)传播到下一个元素(父元素)的过程。

事件传播如何发生?

当为子元素触发事件时,它不会在那里停止,而是传播到其父元素(祖先)。
就像爬DOM树一样。

事件冒泡和事件传播是类似概念的两个术语。

在以下示例中,我们为ID为" sample-parent-div"的父div和ID为" sample-child-div"的子div处理click事件。

HTML

<div id="sample-parent-div">
  <p>Parent div</p>
  <div id="sample-child-div">
    <p>Child div</p>
  </div>
</div>

CSS

#sample-parent-div {
  background-color: lightgreen;
  height: 300px;
}

#sample-child-div {
  background-color: lightyellow;
  height: 100px;
}

jQuery的

$("#sample-parent-div").on("click", function(){
  console.log("Parent div clicked...");
});

$("#sample-child-div").on("click", function(){
  console.log("Child div clicked...");
});

单击父div之后,在浏览器控制台中,我们将得到以下输出" Parent div clicked ..."。

但是,当单击子div时,我们得到两个输出"单击子div ..."和"单击父div ..."。

这是事件从子元素到父元素的传播。

我们可以使用stopPropagation()方法来防止这种情况。

stopPropagation()

我们使用stopPropagation()方法来停止事件从子元素到父元素的传播。

在下面的示例中,我们为子div包含了stopPropagation()方法。
因此,当我们单击child div时,将仅获得" Child div clicked ..."输出。

jQuery的

$("#sample-parent-div").on("click", function(){
  console.log("Parent div clicked...");
});

$("#sample-child-div").on("click", function(e){
  console.log("Child div clicked...");
  e.stopPropagation();
});