国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談javascript事件取消和阻止冒泡

2019-11-20 12:24:39
字體:
來源:轉載
供稿:網友

取消默認操作

w3c的方法是e.preventDefault(),IE則是使用e.returnValue = false;

在支持addEventListener()的瀏覽器中,也能通過調用時間對象的preventDefault()方法取消時間的默認操作。不過,在IE9之前的IE中,可以通過設置事件對象的returnValue屬性為false來達到同樣的效果。下面的代碼假設一個事件處理程序,它使用全部的三種取消技術:

function cancelHandler(event){  var event = event || window.event;  //用于IE  if(event.preventDefault) event.preventDefault();  //標準技術  if(event.returnValue) event.returnValue = false;  //IE  return false;   //用于處理使用對象屬性注冊的處理程序}

當前的DOM事件模型草案定義了Event對象屬性defaultPrevented。

return false

javascript的return false只會阻止默認行為,而是用jQuery的話則既阻止默認行為又防止對象冒泡。

下面這個使用原生JS,只會阻止默認行為,不會停止冒泡

復制代碼 代碼如下:

<div id='div'  onclick='alert("div");'>
  <ul  onclick='alert("ul");'>
    <li id='ul-a' onclick='alert("li");'><a href=">
  </ul>
</div>
var a = document.getElementById("testB");
  a.onclick = function(){
  return false;
};

阻止冒泡

w3c的方法是e.stopPropagation(),IE則是使用e.cancelBubble = true

在支持addEventListener()的瀏覽器中,可以調用事件對象的一個stopPropagation()方法已阻止事件的繼續傳播。如果在同一對象上定義了其他處理程序,剩下的處理程序將依舊被調用,但調用stopPropagation()方法可以在事件傳播期間的任何時間調用,它能工作在捕獲階段、事件目標本身中和冒泡階段。

IE9之前的IE不支持stopPropagation()方法。相反,IE事件對象有一個cancleBubble屬性,設置這個屬性為true能阻止事件進一步傳播。(IE8及之前版本不支持事件傳播的捕獲階段,所以冒泡是唯一待取消的事件傳播。)

當前的DOM事件規范草案在Event對象上定義了另一個方法,命名為stopImmediatePropagation()。類似stopPropagation(),這個方法組織了任何其他對象的事件傳播,但也阻止了在相同對象上注冊的任何其他事件處理程序的調用。

復制代碼 代碼如下:

<div id='div' onclick='alert("div");'>
  <ul onclick='alert("ul");'>
    <li onclick='alert("li");'>test</li>
  </ul>
</div>

阻止冒泡

復制代碼 代碼如下:

function stopHandler(event)
    window.event?window.event.cancelBubble=true:event.stopPropagation();
}

以上所述上就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自贡市| 咸宁市| 清苑县| 射阳县| 平度市| 平乡县| 子长县| 承德县| 资中县| 资源县| 沈丘县| 深水埗区| 水城县| 辽宁省| 汾阳市| 建德市| 吉隆县| 苗栗县| 宣化县| 普兰县| 谷城县| 新乡县| 兴山县| 阿拉善盟| 峨山| 普格县| 合山市| 芦溪县| 屏东市| 綦江县| 临朐县| 久治县| 荆门市| 饶平县| 西青区| 武乡县| 鄂托克旗| 河南省| 蒙城县| 武冈市| 邹城市|