JavaScript有一個(gè)preventDefault方法, 他可用以來(lái)取消事件的默認(rèn)動(dòng)作。比如取消打開鏈接,選擇文本或拖放等。
復(fù)制代碼代碼如下:
event.preventDefault()
該方法將通知 Web 瀏覽器不要執(zhí)行與事件關(guān)聯(lián)的默認(rèn)動(dòng)作(如果存在這樣的動(dòng)作)。例如,如果 type 屬性是 “submit”,在事件傳播的任意階段可以調(diào)用任意的事件句柄,通過(guò)調(diào)用該方法,可以阻止提交表單。注意,如果 Event 對(duì)象的 cancelable 屬性是 fasle,那么就沒(méi)有默認(rèn)動(dòng)作,或者不能阻止默認(rèn)動(dòng)作。無(wú)論哪種情況,調(diào)用該方法都沒(méi)有作用。
這種方法可以阻止當(dāng)前元素的瀏覽器默認(rèn)行為,但并不阻止事件被父級(jí)及document響應(yīng)。如果想徹底取消事件,則可使用stopPropagation
復(fù)制代碼代碼如下:
event.stopPropagation()
該方法將停止事件的傳播,阻止它被分派到其他 Document 節(jié)點(diǎn)。在事件傳播的任何階段都可以調(diào)用它。注意,雖然該方法不能阻止同一個(gè) Document 節(jié)點(diǎn)上的其他事件句柄被調(diào)用,但是它可以阻止把事件分派到其他節(jié)點(diǎn)。
這兩種是在JS中的常用取消事件的方法,但是其實(shí)還有一種用純css就能實(shí)現(xiàn)取消事件響應(yīng)的方法,pointer-events,使用起來(lái)更加簡(jiǎn)單,它可以:
1、阻止用戶的點(diǎn)擊動(dòng)作產(chǎn)生任何效果
2、阻止缺省鼠標(biāo)指針的顯示
3、阻止CSS里的hover和active狀態(tài)的變化觸發(fā)事件
4、阻止JavaScript點(diǎn)擊動(dòng)作觸發(fā)的事件
比如以下CSS就順起到將禁用的按鈕灰掉的效果
復(fù)制代碼代碼如下:
.disabled {
pointer-events: none;
cursor: default;
opacity: 0.6;
}
這種方法明顯比js代碼更加靈活,可惜ie9不支持。以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)和工作能有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選