JS中stopPropagation,preventDefault和return false

在我們?nèi)粘i_發(fā)中經(jīng)常會碰到使用他們。不知道的時候就百度,然后大概的看一下,試試在我們代碼中使用,如果測試通過就OK了,可能我們不是特別了解他們。下面主要講他們的區(qū)別。

event.stopPropagation()

阻止捕獲和冒泡階段中當(dāng)前事件的進(jìn)一步傳播。停止傳播事件,不會阻止默認(rèn)行為(比如a標(biāo)簽鏈接跳轉(zhuǎn),表單提交,input輸入,復(fù)選框選中)
捕獲:從元素外到里。假如在外層元素添加點擊事件,沒有使用stopPropagation方法的話,如果該外層元素的子元素有點擊事件,那么該子元素的點擊事件也會執(zhí)行。
冒泡:從子元素到父元素,一層一層往外傳播

<div id="parent">
    parent
    <div id="child">
        child
    </div>
</div>
<script type="text/javascript"> 
var parent = document.getElementById('parent'); 
var child = document.getElementById('child'); 
parent.onclick = function(e) { 
    console.log('parent')
} 
child.onclick = function(e) { 
    console.log('child')
}
<script> 

點擊parent的區(qū)域(從外到內(nèi)傳播),控制臺輸出,

> parent
> child

點擊child的區(qū)域(從內(nèi)到外傳播),控制臺輸出

> child
> parent

點擊parent,parent點擊事件增加stopPropagation(),控制臺輸出

parent.onclick = function(e) { 
    e.stopPropagation()
    console.log('parent')
} 
> parent

點擊child,child點擊事件增加stopPropagation(),控制臺輸出

child.onclick = function(e) { 
    e.stopPropagation()
    console.log('child')
} 
> child

event.preventDefault()

阻止默認(rèn)行為,但事件還是繼續(xù)傳播(除非碰到事件調(diào)用stopPropagationstopImmediatePropagation(),才停止傳播)。默認(rèn)時間是默認(rèn)跳轉(zhuǎn)的,比如a標(biāo)簽跳轉(zhuǎn)(經(jīng)常會碰到阻止頁面跳轉(zhuǎn),這時候就需要調(diào)用這個方法了),復(fù)選框選中,表單提交,輸入框?qū)懭氲鹊取?br> 例子如下:(加了e.preventDefault()頁面不會跳轉(zhuǎn) )

<a  id="aTag">百度</a>
    <script type="text/javascript"> 
        var aTag = document.getElementById('aTag');
        aTag.onclick = function (e) {
             e.preventDefault() 
        }
    </script> 

return false

阻止事件冒泡,也阻止默認(rèn)行為。一般我們使用的阻止行為盡量避免使用return false,因為有時候我們只需要阻止默認(rèn)行為,但是還需要冒泡,使用return false會導(dǎo)致我們的代碼出現(xiàn)問題。
按照阻止順序:

  1. event.preventDefault()
  2. event.stopPropagation()
  3. 停止函數(shù)執(zhí)行并返回
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容