My Other Page
Teaser text...
可能在你剛開始學習關於jQuery事件處理時,看到的第一個例子就是關於如何阻止瀏覽器執行預設行為,例如下面這段示範click事件的程式碼:
像上面這樣的例子會讓使用者養成使用「return false」來阻止瀏覽器執行預設行為的壞習慣,在這篇文章裡,我將會討論關於阻止瀏覽器執行預設行為的兩個非常重要的主題:
•選擇正確的方法: return false還是preventDefault,stopPropagation或stopImmediatePropagation
•選擇合適的位置,開始,開始選擇某個地方:你應該在事件回呼的哪個部分取消瀏覽器執行預設行為?
注意:當我在這篇文章中提到event bubbling(事件冒泡),我想表達的是大部分事件都是先在初始DOM上觸發,然後再透過DOM樹往上,在每一級父元素上觸發,事件不會在兄弟節點或是子節點上冒泡(當事件向下冒泡時,我們叫它事件捕捉(event capturing)),你可以在這裡了解更多關於事件起泡和捕捉的介紹。
選出正確的方法
「return false」之所以被誤用的如此厲害,是因為它看起來像是完成了我們交給它的工作,瀏覽器不會再將我們重定向到href中的鏈接,表單也不會被繼續提交,但這麼做到底有什麼不對呢?
」return false「到底做了什麼?
當你每次呼叫」return false「的時候,它實際上做了3件事情:
•event.preventDefault();
•event.stopPropagation();
•停止回呼函數執行並立即傳回。
“等等”,你叫了起來!我只是想讓瀏覽器停止繼續執行預設行為而已,我不需要它去做另外2件事。
這3件事中用來阻止瀏覽器繼續執行預設行為的只有preventDefault,除非你想要停止事件冒泡,否則使用return false會為你的程式碼埋下很大的隱患,讓我們通過一個真實的例子來看看這樣的誤用會造成什麼後果:
這是我們用來示範的HTML:
如果我們把它和live或delegate事件混在一起使用時,情況就更糟了。
preventDefault()
大多數情況下,當你使用return false時,你其實真正需要的是e.preventDefault()。要使用e.preventDefault,你需要確保你傳遞了event參數到你的回掉函數中(在這個例子裡,就是那個e):
stopPropagation()
但有些情況下,你有可能需要停止事件冒泡,讓我們看看下面的例子:
});
使用return false,div的click事件不會被觸發,但是使用者也不會到達他們點的那個連結。
只有當你同時需要preventDefault和stopPropagation,你的程式碼可以接受直到你的回呼執行完成才停止執行瀏覽器的預設行為,那你就可以使用」return false「。但我強烈建議你別在寫給其它jQuery開發者的演示程式碼中使用這個方法,因為這會造成更多誤用,只有在你確信非用不可的情況下再去使用”return false“。
選擇適當的位置
如果你使用了”return false“,它只會在你的回調函數執行結束才去取消瀏覽器的預設行為,但是使用e.preventDefault,我們有更多的選擇,它可以隨時停止瀏覽器執行預設動作,而不管你將它放在函數的哪個部分。
1. 開發階段,
你應該總是把它放在第一行。你最不想做的事情可能就是你正在調試將一個form改成ajax提交的時候,它卻已經被按照舊方法提交了。2. 產品階段,
如果你採用了漸進增強(progressive enhancement),那就把它放到回調的結束位置,或者是邏輯終點,如果在一個普通頁面採用漸進增強,那你就需要在伺服器端考慮如果瀏覽器不支援JS時(或被停用時),對連結的click事件和表單的提交事件的處理。這裡的好處是,我們不考慮關閉JS的情況,只考慮支援js時的強狂,如果你的回調程式碼出錯拋出了異常,讓我們看看下面的程式碼:
結論
我希望這篇文章傳達的訊息足夠你在需要阻止瀏覽器執行預設行為時做出正確的選擇。記住,只有當你真的明白你在做什麼時,才使用”return false“,並確保你是在函數的正確位置調用了相應的程式碼。最後,盡可能保持程式碼的彈性,盡量不要再用「return false」了!
人工智慧驅動的應用程序,用於創建逼真的裸體照片
用於從照片中去除衣服的線上人工智慧工具。
免費脫衣圖片
AI脫衣器
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!
好用且免費的程式碼編輯器
中文版,非常好用
強大的PHP整合開發環境
視覺化網頁開發工具
神級程式碼編輯軟體(SublimeText3)
C語言return的用法有:1、對於傳回值類型為void的函數,可以使用return語句來提前結束函數的執行;2、對於傳回值型別不為void的函數,return語句的作用是將函數的執行結果傳回給呼叫者;3、提前結束函數的執行,在函數內部,我們可以使用return語句來提前結束函數的執行,即使函數並沒有回傳值。
原始碼:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}#輸出上述程式碼的輸出可以簡單地得出結論:return在finally之前執行,我們來看下字節碼層面上發生了什麼事情。下面截取case1方法的部分字節碼,並且對照源碼,將每個指令的含義註釋在
Vue3.2setup語法糖是在單文件組件(SFC)中使用組合式API的編譯時語法糖解決Vue3.0中setup需要繁瑣將聲明的變量、函數以及import引入的內容通過return向外暴露,才能在使用的問題1.在使用中無需return宣告的變數、函數以及import引入的內容,即可在使用語法糖//import引入的內容import{getToday}from'./utils'//變數constmsg='Hello !'//函數func
JavaScript中return的用法,需要具體程式碼範例在JavaScript中,return語句用來指定從函數傳回的值。它不僅可以用於結束函數的執行,還可以將一個值傳回給呼叫函數的地方。 return語句有以下幾個常見的用法:傳回一個值return語句可以用來傳回一個值給呼叫函數的地方。下面是一個簡單的範例:functionadd(a,b){
JavaScript 函數提供兩個介面實現與外界的交互,其中參數作為入口,接收外界資訊;返回值作為出口,並將運算結果回饋給外界。以下這篇文章帶大家了解JavaScript函數回傳值,淺析下return語句的用法,希望對大家有幫助!
JavaScript中return的使用方法,需要具體程式碼範例在JavaScript中,return是一個非常重要的關鍵字,它通常用於函數中傳回值或結束函數的執行。 return語句用來將值傳回給函數的呼叫者,並終止函數的執行。 return語句可以在函數的任何位置使用,並且可以傳回任何JavaScript資料類型,包括數字、字串、布林值、
Python回傳值return用法是當函數執行到return語句時,就會立即停止執行,並將指定的值傳回給呼叫函數的地方。詳細用法:1、傳回單一值;2、傳回多個值;3、傳回空值;4、提前結束函數的執行。
是的,即使在方法中的return語句之後,finally區塊也會被執行。 Java中無論是否發生異常,finally區塊都會執行。如果我們在finally區塊中明確呼叫System.exit()方法,那麼只有它不會被執行。很少有情況不會執行finally,例如JVM崩潰、電源故障、軟體崩潰等。除了這些情況外,finally區塊將始終被執行。範例publicclassFinallyBlockAfterReturnTest{ publicstaticvoidmain(St