jQuey中的return false作用是什么?
在眾多的語句中都有return false的使用,當然對于熟悉它的開發者來說,當然是知根知底,知道此語句的作用,當然也就知道在什么時候使用此語句,不過對于初學者可能未必掌握的很清晰明了,下面通過實例介紹一下return false語句的作用。
return語句的作用一般是返回函數值,并不再執行下面的語句,直接跳到函數調用的地方,另外還有一個重要的作用,那就是取消默認事件行為的發生。
代碼實例如下:
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>武林網</title><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ return false; }) }) </script> </head> <body> <div id="first"> <div id="second"> <a id="third" href=//www.49028c.com>鏈接</a> </div> </div> </body> </html>
從以上代碼可以看出,點擊鏈接之后并沒有跳轉到//www.49028c.com首頁,這是因為return false能夠阻止瀏覽器的默認行為,比如點擊超鏈接就會實現網頁跳轉就是瀏覽器的默認行為。下面再看一個表單驗證的例子:
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="author" content="http://www.49028c.com/" /><title>武林網</title><script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(":submit").click(function(){ if($("#username").val()=="") { alert("用戶名不能為空!"); $("#username").focus(); return false; } if($("#pw").val()=="") { alert("密碼不能為空!"); $("#pw").focus(); return false; } }) }) </script> </head> <body> <form action="http://www.49028c.com" name="myform"> <ul> <li>用戶名:<input type="text" id="username" /></li> <li>密碼:<input type="password" id="pw" /></li> <li><input type="submit" value="提交表單"></li> </ul> </form> </body> </html>
以上代碼中,每一個判斷語句的最后都添加了return false語句,如果用戶名或者密碼為空的話,則會彈出提示框,如果沒有return false語句的話,那么盡管還能夠彈出提示框,但是表單依然會被提交,因為點擊提交表單就是點擊提交按鈕的默認事件行為。
那為什么jquery中的return false不起作用,有什么解決方法?
寫了個表單驗證js代碼如下:
function CheckUserName(){ var username = $("#username").val(); $.get("b.php",{ name:username}, function (data){ if(data == 1){ $("#warnning").html("<font color=#FF3300>Account is used.</font>"); return false; //為啥不管用捏? } else { $("#warnning").html("<font color=#00CC66>You can register.</font>"); return true; //為啥不管用捏? } } ); }
原因:邏輯沒弄清楚,要將ajax設置為同步的,需要使用$.ajax,$.get默認是異步的,并且不是在回調函數內return,而是在CheckUserName函數中聲明一個變量來接受回調函數的返回值,然后CheckUserName返回這個值。
修改后的代碼:
function CheckUserName(){ var username = $("#username").val(); var result=false; $.ajax({async:false//要設置為同步的,要不CheckUserName的返回值永遠為false ,url:'b.php',data:{name:username} ,success:function(data){ if(data == 1){ $("#warnning").html("<font color=#FF3300>Account is used.</font>"); result=false; } else { $("#warnning").html("<font color=#00CC66>You can register.</font>"); result=true; } }}); return result;//==========這里才是CheckUserName的返回值,回調函數返回值沒有意義 }
OK! 測試一下,沒問題了!
js/jquery中什么時候用return,什么時候用return false?這也是大家疑惑的地方。
根本的說 return 是函數的返回結果用, 如果你一個函數需要執行結果那就return 你需要的結果,不需要結果就不用return;
而在jq中有些特殊的用法,比如$().each(function(){return false;});
其中如果不return false就會循環所有元素, 而如果在其中一次return false則不在進行后續的遍歷,跳出循環。
以上就是針對jQuey中的return false進行的詳細學習,希望對大家的學習有所幫助。
新聞熱點
疑難解答