JS中事件冒泡和事件捕获介绍,首尔壹处住所产生枪击

  ​依据澳大金沙萨(Australia)传播媒介二十七日风尚报纸发表,法兰克福西北边1处住所产生枪击事件,造成3位过逝,一位受到损伤。最近公安部已经到达现场,但事件原因未知。(新闻记者王聪)

原生js–事件类型

 

一、表单事件:

submit事件

reset事件

click事件

change事件

focus事件(不冒泡) (IE和ES5支撑冒泡的focusin)

blur事件(不冒泡) (IE和ES5援救冒泡的focusout)

input事件(ES五 textinput提供更有益于的拿走输入文字的方案)

 

2、Window事件

load事件

DOMContentLoaded事件

readyStatechage事件

unload事件

beforeunload事件

resize事件

scroll事件

 

三、鼠标事件

click事件

dbclick事件

mouseover事件(冒泡)

mouseout事件(冒泡)

mousedown事件

mouseup事件

contextmenu事件

mouseenter事件(不冒泡)

mouseleave事件(不冒泡)

mousewheel事件(FF DOMMouseScroll事件、DOM3 wheel事件)

 

四、键盘事件

keydown事件

keyup事件

keypress事件

本节介绍各样大规模的浏览器事件。

聊起JavaScript的
事件,事件冒泡、事件捕获、阻止默许事件这八个话题,无论是面试照旧在日常的干活中,都很难防止。
事件捕获阶段:事件从最上一流标签起头往下搜寻,直到捕获到事件指标(target)。
事件冒泡阶段:事件从事件指标(target)开始,往上冒泡直到页面包车型客车最上超级标签。

一、鼠标事件


鼠标事件指与鼠标相关的风浪,重要有以下部分。

一、冒泡事件:

1.1、click事件,dblclick事件

当用户在Element节点,document节点,window对象上单击鼠标(或按下回车键)时,click事件触发。

“鼠标单击”定义为,用户在同一职责完成二次mousedown动作和mouseup动作。它们的触及顺序是:mousedown第二接触,mouseup继而触发,click最终触发。

上边是一个设置click事件监听函数的事例。

div.addEventListener("click", function( event ) {
  // 显示在该节点,鼠标连续点击的次数
  event.target.innerHTML = "click count: " + event.detail;
}, false);

dblclick事件当用户在element、document、window对象上,双击鼠标时触发。该事件在mousedownmouseupclick随后触发。

事件依照从最特定的风云目的到最不特定的轩然大波目的(document对象)的依次触发。通俗来讲正是,就是当设定了多少个div的嵌套时;即建立了老爹和儿子关系,当父div与子div共同投入了onclick事件时,当接触了子div的onclick事件后,子div举行相应的js操作,然则父div的onclick事件相同会被触发。

1.2、mouseup事件,mousedown事件,mousemove事件

mousedown事件在按下鼠标键时接触。
mouseup事件在放出按下的鼠标键时触发。
mousemove事件当鼠标在1个节点内部移动时接触。当鼠标持续运动时,该事件会接连触发。为了防止质量难题,建议对该事件的监听函数做一些限制,比如限制壹段时间内只好运转一遍代码。

html:

1.3、mouseover事件,mouseenter事件

mouseover事件和mouseenter事件,都以鼠标进入叁个节点时接触。

双方的区分是,mouseenter事件只触发1回,而若是鼠标在节点内部移动,mouseover事件会在子节点上接触多次。

// HTML代码为
// <ul id="test">
//   <li>item 1</li>
//   <li>item 2</li>
//   <li>item 3</li>
// </ul>

var test = document.getElementById('test');

// 进入test节点以后,该事件只会触发一次
// event.target 是 ul 节点
test.addEventListener('mouseenter', function (event) {
  event.target.style.color = 'purple';
  setTimeout(function () {
    event.target.style.color = '';
  }, 500);
}, false);

// 进入test节点以后,只要在子Element节点上移动,该事件会触发多次
// event.target 是 li 节点
test.addEventListener('mouseover', function (event) {
  event.target.style.color = 'orange';
  setTimeout(function () {
    event.target.style.color = '';
  }, 500);
}, false);
<div>
 <input type="button" value="测试事件冒泡" />
</div>

1.4、mouseout事件,mouseleave事件

mouseout事件和mouseleave事件,都以鼠标离开贰个节点时接触。

两边的分别是,mouseout事件会冒泡,mouseleave事件不会。子节点的mouseout事件会冒泡到父节点,进而触发父节点的mouseout事件。mouseleave事件就未有那种效果,所以离开子节点时,不会触发父节点的监听函数。

js:

1.5、contextmenu事件

contextmenu事件在四个节点上点击鼠标右键时接触,或然按下“上下文菜单”键时触发。

  var $input = document.getElementsByTagName("input")[0];
   var $div = document.getElementsByTagName("div")[0];
   var $body = document.getElementsByTagName("body")[0];

   $input.onclick = function(e){
      this.style.border = "5px solid red"
      var e = e || window.e;
      alert("red")
   }
   $div.onclick = function(e){
      this.style.border = "5px solid green"
      alert("green")
   }
   $body.onclick = function(e){
      this.style.border = "5px solid yellow"
      alert("yellow")
   }