jQuery中的常用內容總結(三)

来源:http://www.cnblogs.com/funnyzpc/archive/2017/10/10/7571998.html
-Advertisement-
Play Games

jQuery中的常用內容總結(三) 轉載請註明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html 內容提要 選擇器(第一節) 選擇器的擴展方法(第一節) 節點的CSS操作及節點其他操作(第一節) Ajax同步與非同步(上一節) 事件(上一節) 彈窗(上一 ...


jQuery中的常用內容總結(三)

 

轉載請註明地址:http://www.cnblogs.com/funnyzpc/p/7571998.html

 

內容提要


 


A>表單參數序列化提交

  如果沒有藉助jQuery,表單可以直接提交,這樣帶來兩個問題就是安全(get提交)或表單參數驗證障礙,嗯~,可能很難懂,這樣吧,我先放張圖,這圖是原生get提交的->

 

  這下清楚了吧,所有的參數都在瀏覽器裡面顯示,稍稍別有用心的人就能輕易利用,這是其一;

  如果是post提交,可能沒有以上這個問題,但是。。。,如果參數值提交前需要在js中做處理(表單參數驗證或參數拼接等等),這樣直接把數據扔給後臺的童鞋,肯定不太好~

  額,還可以藉助前兩章中的方法。。。可能會累死啊~,畢竟每一個表單都要單獨取值。。。總之,這樣麻煩;哈哈~ヽ(●´ω`●)ノ,既然麻煩,jQuery給我們提供了兩個好用的方法serializeArray()serialize()

  前者可以將表單的參數值序列化成一個Array的形式(用於post提交),後者會將表單參數值序列化成鍵值字元串的形式(用於get提交),二話不說,先放出源碼以及效果圖-->

 1 <form style="padding-left: 100px;" id="forms">
 2     姓名:<input type="text" name="name"/><br/>
 3     班級:<select name="class">
 4                 <option value="1">一班</option>
 5                 <option value="2">二班</option>
 6                 <option value="3">三班</option>
 7             </select>
 8             <br/>
 9     性別:男<input type="radio" name="sex" value="male"/>
10<input type="radio" name="sex" value="female"/>
11              <br/>
12     課程:<label><input name="course" type="checkbox" value="1" />語文 </label> 
13             <label><input name="course" type="checkbox" value="2" />數學</label> 
14             <label><input name="course" type="checkbox" value="3" />歷史</label> 
15             <label><input name="course" type="checkbox" value="4" />化學</label>
16     <br/>
17         <button  type="submit">submit</button>
18         <button type="button" onclick="submitForm(1)">提交1</button>
19         <button  type="button" onclick="submitForm(2)">提交2</button>
20          <button type="reset">取消</button>
21 </form>
 1 function submitForm(val){
 2         if(1==val){
 3             //serializeArray
 4             var serializeArray=$("#forms").serializeArray();
 5             console.log("serializeArray:");
 6             console.log(serializeArray);
 7             for(var i in serializeArray){
 8                 
 9             }
10         }else{
11             var serialize=$("#forms").serialize();
12             console.log("serialize:");
13             console.log(serialize);
14         }
15     }

  後者已經比較完美了,可以直接拼接到提交路徑後面就好了,但~對於前者,這個serializeArray只是幫忙做了一部分,如果是post提交應該是{key1:value1,key2:value2}的形式,此時即使對於菜鳥也很容易寫一個通用的方法處理成對象鍵值對的形式,在此就貢獻一個吧(๑´ڡ`๑)-->

 1     function submitForm(val){
 2         if(1==val){
 3             //serializeArray
 4             var serializeArray=$("#forms").serializeArray();
 5             console.log("serializeArray_before:");
 6             console.log(serializeArray);
 7             console.log("serializeArray_after:");
 8             var paramsArray = $("#forms").serializeArray(),params = {};
 9             for ( var i in paramsArray)
10                 params[paramsArray[i].name] = paramsArray[i].value;
11             console.log(params);
12         }else{
13             var serialize=$("#forms").serialize();
14             console.log("serialize:");
15             console.log(serialize);
16         }
17     }

  實際效果:

  額,嗯~,其實有兩個小問題,如果表單有一項沒有填的話參數會不存在,還有一個問題是 多選框永遠只會序列化第一個值,切記 切記。。。(ಠ .̫.̫ ಠ)

  啊哈,這個問題就不折騰了 就交給聰明的讀者吧~~~

  哦~~~,還存在一個問題是,如果表單外層的form標簽若不存在,則不能序列化參數,如果table標簽裡面嵌一個form的也不能,至於這個原因 個人猜想可能是與html規範衝突吧~,這個是我在實際開發中碰到的問題,希望各位不要踩坑啊!

B>遍歷

  由於js本身就是腳本語言的緣故,遂在js中可遍歷的對象大致有三種 對象Object類型、數組Array類型以及混合類型(一般是Object+Array類型),相比較java是不是巨強大,O(∩_∩)O哈哈~

  

 1     var obj={'a':1,'b':2,'c':3},
 2            array=['a','b','c','d'],
 3             mix={'data':['a','b','c'],'pp':99,'kk':21};
 4     console.log("obj:"+obj);
 5     for(var i in obj){
 6         console.log("i="+i+" obj[i]="+obj[i]);
 7     }
 8     console.log("array:"+array);
 9     for(var j in array){
10         console.log("j="+j+" array[j]="+array[j]);
11     }
12     console.log("mix:"+mix);
13     for(var k in mix){
14         console.log("k="+k+" mix[k]="+mix[k]);
15     }

  通過代碼和實際輸出結果可以看出:

                1.如果遍歷的是對象類型,迴圈的每一項都會只輸出這個對象item的鍵key,至於值就需要Object[key]來獲取了;

                2.如果遍歷的是數組類型,迴圈的每一項都會只輸出這個數組Array的下標,下標所指的值需要Array[index]來獲取

                3.如果是混合類型,最外層若是Array則同數組迴圈,若是對象Object則同對象迴圈

  嗯哼...,看起來是不是超簡單

  (這裡只講了for in迴圈,這種寫法是一種簡略寫法,由於非常常用,其他的形式用的少就不綴訴啦。。。)

 

  嗯,以上只是提到了js中的遍歷,現在給大家演示下jQuery中的遍歷,這裡需要說明的是一般對象或者數組遍歷用js的遍歷就好了,jQuery中的遍歷(each)一般是用來遍歷選定的dom對象的,這裡給出樣例哈-->

1     $("#forms button").each(function(idx,ele){
2         console.log("idx="+idx+" ele="+$(ele).text());
3     });

  以上代碼中的each方法的返回值有兩個

    idx:當前迴圈到的dom對象所在的下標位置

    ele:當前迴圈到的dom對象可直接使用jQuery的方法對當前迴圈的dom進行操作

  關於遍歷這一節就不過多綴訴了,相信各位鍵盤上敲敲就輕鬆明瞭~

C>其他

  關於實際開發中常用的小知識,這裡單獨擰出來說說(◍'౪`◍)ノ゙:

  Number():這個方法是將字元串類型轉換成數字(Number)的方法,經轉換後的參數是Number類型,如果被轉換的類型含有數字外的字元則返回NaN

    

  toFixed(小數位數):此方法可以將Number四捨五入保留指定長度小數位

    

  isNan(對象):此方法可以判斷傳入的對象是不是數字類型,如果是則返回false,反之為true,同時對象為數字的字元串類型也是可以的

    

 

  window.location.reload():這個方法是可以刷新瀏覽器的,在js中可以直接寫就好~

  setTimeout(方法的字元串形式, 刷新的時間):此方法可以設置指定時間調用指定js方法,刷新時間為毫秒

   preventDefault():這個方法一般用於阻止dom的預設事件而使用的,什麼是預設事件,例如,點擊提交按鈕提交表單、點擊a標簽跳轉等都是,如果用此類標簽做其他事情的話dom的預設事件肯定是要阻止的

  哈,可能不明白,給個例子(如果細究還是自行在瀏覽器打js腳本看吧。。。,說實話你這樣我救不了你╰_╯)

1 $("a").click(function(event){
2     event.preventDefault();
3   });

  關於js中的空、零、null、undefined的一些點撥

    在js中如果對象值不存在的時候一般返回undefined,這個undefined既不等於true也不等於false,但且記住undefined在if判斷中是false,請區別於直接比較的值,

    在js中如果除了空和零之外的變數在比較時都是true(undefined這個關鍵字除外哈)

    在js中變數值是不存在null這一說,這個要區別於java中的空值

  額,最後個大家一個在dom裡面寫js的簡便方法,我就直接上代碼,自行研究,不解釋哈~●ω●

 

 

 

 本節結束啦,真開心~↖(▔▽▔)↗


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java線程相關概念與原理 1. 相關基本概念 進程:一個記憶體中運行的應用程式。 線程:一個進程可以有多個線程,線程是指進程內部同時做的事情,“同時”僅僅是人的感覺,實際上,CPU進行時間切分,輪換執行各個線程。 並行:多個CPU執行一個程式,是真正的“同時”。 併發:通過CPU調度演算法,輪換執行多 ...
  • 1.將方法調用同方法主體關聯起來被稱為 2.編譯期綁定(靜態)是在程式編譯階段就確定了引用對象的類型 3.運行期綁定(動態綁定)是指在執行期間判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法 4.除了static方法和final方法(private方法屬於final方法),其他所有方法都是 ...
  • 第五章 異常 一、異常概述 概述:異常是在程式的運行過程中所發生的不正常的事件,他會中斷正在運行的程式 二、異常處理 1.關鍵字:try catch finally throw throws 2.Try:把可能出現異常的代碼放入try中 3.Catch:捕捉異常 4.Finally:無論是否有異常, ...
  • MyBatis MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將介面和 Java 的 POJOs(Plain Old ...
  • 1、try塊中沒有拋出異常,try、catch和finally塊中都有return語句 1 public static int NoException(){ 2 int i=10; 3 try{ 4 System.out.println("i in try block is:"+i); 5 retu ...
  • Python的整數運算結果仍然是整數,浮點數運算結果仍然是浮點數。 但是整數和浮點數混合運算的結果就變成浮點數了。 ...
  • #1449 : 尾碼自動機三·重覆旋律6 #1449 : 尾碼自動機三·重覆旋律6 時間限制:15000ms 單點時限:3000ms 記憶體限制:512MB 描述 小Hi平時的一大興趣愛好就是演奏鋼琴。我們知道一個音樂旋律被表示為一段數構成的數列。 現在小Hi想知道一部作品中所有長度為K的旋律中出現次 ...
  • 前言:這是筆者學習之後自己的理解與整理。如果有錯誤或者疑問的地方,請大家指正,我會持續更新! JSON (javascript object notation) 全稱是 javascript 對象表示法,它是一種數據交換的文本格式,而不是一種編程語言,用於讀取結構化數據。2001年由Douglas ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...