JS中的事件冒泡
js中的事件冒泡指的是:多個元素巢狀的時候,它們就會有層次關係,當這些元素註冊了相同的事件時,如果其中一層的元素觸發了這個事件,可能導致其它層的元素也觸發這個事件,這樣一來就會造成混亂。這個情況就是事件冒泡。為了避免這種混亂的發生,我們要想辦法阻止事件冒泡的發生。
看一個事件冒泡的例子:
上面是三個相互巢狀的div,樣式程式碼這裡省略了,js程式碼中,分別為這三個div註冊了onclick點選事件,但是由於它們是相互巢狀的,因此在點選最外面的div的時候,使得三個div全部觸發了點選事件,控制檯打印出了三者的id,這就是事件冒泡的結果。
當然我們不想要這種結果,於是有了下面的阻止冒泡的方法:
阻止事件冒泡的方法就是分別為每個事件傳入一個引數e,然後在事件程式碼中加入一句e.stopPropagation();就是這麼簡單。
但是這種方法也有缺憾,就是它能夠相容chrome和firefox以及IE9以上的瀏覽器,但是不能相容IE8及以下的瀏覽器。
IE8及以下的瀏覽器阻止事件冒泡的語句為window.event.cancelBubble=true;這種方法chrome也支援,但是firefox不支援。
相關推薦
關於JS中事件捕獲,事件冒泡與事件代理(事件委託),及e.target與e.currentcurrentTarget的區別
事件捕獲: 表示事件的觸發順序,當繫結事件方法的第三個引數值設定為true時,事件觸發的順序為捕獲。 當一個元素的事件被觸發的時候(如onclick事件),該事件會從document開
JS中事件繫結函式,事件捕獲,事件冒泡
1 事件繫結:事件與函式繫結的方式 1.1 元素.onclick這種形式,如下: 1 <div id="div1">aaa</div> 2 3 <script type="text/javascript">
JS中事件綁定函數,事件捕獲,事件冒泡
obj adding 事件 點擊 dev 不同 aaa 什麽 div 1 事件綁定:事件與函數綁定和怎麽取消綁定 1.1 元素.onclick這種形式,如下: 1 <div id="div1">aaa</div> 2
JS中事件的執行順序和AJAX的異步
容易 jquery 博客 出現問題 同步 內容 img 留言 加載 之前了解過異步和同步,知道同步是順序執行,異步是同時執行,但是沒有遇到過這種情況,不是很理解,這兩天做項目突然遇到了,對這有了一個初步的認識。廢話不多說,直接上要求。 1.項目要求:外部調用x
js阻止事件冒泡的兩種方法
type print mil opp name sel code read lib 一、冒泡事件簡介 當我們點擊一個控件的時候,如果包括這個控件的父控件也有click事件,則會繼續執行。 方法一:event.stopPropagation( ); 例如: <div
js的事件冒泡和事件捕獲
use 應用 ges color mouse 冒泡 code 元素事件 三個參數 一、定義 事件捕獲:從document到觸發事件的那個節點,自上而下觸發事件; 事件冒泡:從觸發事件節點依次向上觸發事件,直到document。 原聲js中,綁定事件方法addEventLis
js之事件冒泡和事件捕獲詳細介紹
1-1 ppr lang strong 傳播 默認 ont 也不會 element (1)冒泡型事件:事件按照從最特定的事件目標到最不特定的事件目標(document對象)的順序觸發。 IE 5.5: div -> body -> document
JS-JQ-事件冒泡
can elements 元素 事件冒泡 style get scrip 500px opp 一、冒泡的原理: 子元素會觸發父元素的事件 自上而下的觸發事件 二、解決方法: JS: IE:event.cancelBubble=true F
JS中事件綁定
js事件綁定事件綁定事件綁定IE方式 attactEvent(事件名稱,函數),綁定事件處理函數 derachEvent(事件名稱,函數),解除綁定DOM方式 addEventListener(事件名稱,函數,捕獲) removeEventListener(事件
JS中事件綁定的三種方式
events load textarea sch 事件 ron 事件綁定 upload fun 以下是搜集的在JS中事件綁定的三種方式。 1. HTML onclick attribute <button type="button" id="upload"
js中的冒泡排序
數組 temp ++ nbsp 控制 i++ 一定的 順序 就是 <!-- 冒泡排序:把一組數列按照一定的順序進行排列,從大到小,或者從小到大 --> // 控制循環的輪數 arr = [3,14,55,2,1,4,5]
react中事件冒泡之填坑
app 簡單 冒泡 wrapper change checked 執行 class 讓我 今天在寫個組件,大致代碼是這樣的: class Switch extends React.Component { handlerChange = (e) => {
js的事件冒泡,事件捕獲
capture func fun == alt lis select tlist con addEventListener() 方法可以指定 "useCapture" 參數來設置傳遞事件類型:false→冒泡 true→捕獲 默認false。
js防止事件冒泡
不同瀏覽器的事件物件: window.event(其中window可以省略不寫)代表著事件物件的狀態。只有在事件發生時生效。如滑鼠、鍵盤等事件被觸發時這個 物件才存在。window.event這隻在IE下是這樣的,也就是說其他瀏覽器並不支援。window.event的某些屬性只對特定的事
JS中事件的新增
在JS中,事件的新增主要有三種方式: 1. 直接在html標籤上新增 <div onclick="程式碼段或者是函式">div</div> 這種方法也可以通過JS的obj.setAttribute("onclick", func
js中事件預設行為
事件物件的preventDefault方法,可以阻止本次事件所觸發的瀏覽器預設行為,例如a標籤的href跳轉,瀏覽器的F5重新整理等等 在點選事件裡新增e.preventDefault()即可 準備一個a標籤就行 <a id="link" href="http:/
JS中事件繫結的2種方式
首先,在body裡寫一些內容。 &nbs
js中事件繫結和普通事件的區別
簡單來說,普通事件中的onclick只支援單個事件,會被其他onclick事件覆蓋,而事件繫結中的addEventListener可以新增多個事件,而不用擔心被覆蓋。並且普通方式繫結事件後,不可以取消。addEventListener繫結後則可以用removeEvenList
js中事件物件event
一、Event物件 Event 物件代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、滑鼠的位置、滑鼠按鈕的狀態。 事件通常與函式結合使用,函式不會在事件發生前被執行! 當一個事件發生的時候,和當前這個物件發生的這個事件有關的一些詳細資訊(包括導致事件的元素、事
徹底弄懂JS的事件冒泡和事件捕獲
事件冒泡階段:事件從事件目標(target)開始,往上冒泡直到頁面的最上一級標籤。 假設一個元素div,它有一個下級元素p。 <div> <p>元素</p> </div> 這兩個元素都綁定了click事件,如果使用者點