5、jquery使用工具函數

  工具函數對應的網址在 http://api.jquery.com/categouy/utilities/javascript

    工具函數處理對象的不一樣,能夠將其分爲幾大類別:瀏覽器的檢測、數組和對象的操做、字符串的操做、測試的操做、URL的操做。html

1.瀏覽器的檢測java

在瀏覽其的進啊側中,又可分爲瀏覽器類型與特徵的檢測,前者獲取瀏覽器的名稱或版本信息,從此這檢測瀏覽是否支持標準的W3C盒子模型。jquery

1-1.雖然jquery有很好的瀏覽器兼容性,但有時程序開發人員須要獲取瀏覽器的相關信息,提供給用戶或程序。在jquery中,能夠經過訪問$.brower對象的屬性獲取。$.brower對象即jQuery.brower對象,用於處理與瀏覽器相關的事務,該對象的屬性如表所示:web

$.brower對象的屬性
屬性名稱 攻技能描述
webkit 若是是Webkit相關的瀏覽器,爲true,不然爲false。這是1.4以上版本新增的屬性
mozilla 若是是Mozilla相關的瀏覽器,爲true,不然爲false。
safari 若是是Safari相關的瀏覽器,爲true,不然爲false。
opera 若是是Opera相關的瀏覽器,爲true,不然爲false。
msie 若是是Opera相關的瀏覽器,爲true,不然爲false。
version  獲取瀏覽器版本號

 

示例代碼:ajax

 <script type="text/javascript">
        $(function() {
            var strTmp = "您的瀏覽器名稱是:";
            if ($.browser.msie) { //IE瀏覽器
                strTmp += "IE";
            }
            if ($.browser.mozilla) { //火狐相關瀏覽器
                strTmp += "Mozilla FireFox";
            }
            strTmp += " 版本號是:" //獲取版本號
                   + $.browser.version;
            $("#divTip").html(strTmp);
        })
    </script>

 

1-2.盒子模型api

盒子模型是CSS中的專術名詞,用以描述頁面設置中的各類屬性,如內容(content)、填充(padding)、邊框(border)、邊界(margin)。因爲這些屬性平和在一塊兒,與平常生活中的「盒子」很相像,所以成爲盒子模型。數組

盒子模型分爲兩類:一類是W3C盒子模型;另外一類是IE盒子模型。二者最根本的區別在於height與width這兩個只是否包含padding與border。瀏覽器

W3C盒子模型不包含padding與border,僅值內容(content)的的height和width。IE盒子模型的height和width的長度包含padding與border。服務器

在jquery中,能夠經過jquery.suport.boxModel對象返回的屬性值,肯定頁面是不是標準的W3C盒子模型,其調用的方法有兩種,以下所示:

jQuery.support.boxModel
$.support.boxModel

  該方法返回一個布爾值,若是是true表示是W3C盒子模型,不然不是W3C盒子模型。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var strTmp = "您打開的頁面是:";
            if ($.support.boxModel) { //是W3C盒子模型
                strTmp += "W3C盒子模型";
            }
            else { //是IE盒子模型
                strTmp += "IE盒子模型";
            }
            $("#divTip").html(strTmp);
        })
    </script>

 

2.數組和對象的操做

2-1.遍歷數組

使用$.each()工具函數能夠實現頁面中元素的遍歷,此外還能夠完成制定數組的遍歷,其調用語法格式以下:

$.each(obj,fn(para1,para2))

其中,參數obj表示要遍歷的數組或對象。fn爲每一個遍歷元素執行的回調函數,該函數包含兩個參數:para1表示數組的序號或對象的屬性;para2表示數組的元素和對象的屬性。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var arrStu = { "張三:": "60", "李四:": "70", "王二:": "80" }
            var strContent = "<li class='title'>姓名:分數</li>";
            $.each(arrStu, function(Name, Value) {
                strContent += "<li>" + Name + Value + "</li>";
            })
            $("ul").append(strContent);
        })
    </script>

 

2-2.遍歷對象

$.each()函數除了遍歷數組外,還能夠遍歷對象,獲取對象的屬性和值。經常使用於對一些位置對象的遍歷,其使用方法與遍歷數組比本一致,示例代碼以下:

    <script type="text/javascript">
        $(function() {
            var strContent = "<li class='title'>屬性:值</li>";
            $.each($.ajaxSettings, function(Property, Value) {
            strContent += "<li>" + Property + ":" + Value + "</li>";
            })
            $("ul").append(strContent);
        })
    </script>

結果:

3.數據篩選

在數組操做時,有時須要根據各類個條件篩選元素,傳統的javascript代碼將遍歷整個數組,在遍歷中設置曬尋規則,而後獲取複合規則的嚴肅。而在jquery中,可使用工具函數jquery.grep(),很方便地篩選數組中的任何元素,該函數調用的語法格式以下:

$grep(array,function(elementOfArray,indexInArray),[invert])

參數array爲要篩選的原數組,回調函數fn中能夠設置兩個參數,其中elementOfArray爲數組中的元素,indexInArray爲元素中的序列號。另外,可選項[invert]爲布爾值,表示是否根據fn的規則去反向結果,默認爲false,表示不取反,若是爲true表示取反,即返回與回調函數規則相反的數據。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var strTmp = "篩選前數據:";
            var arrNum = [2, 8, 3, 7, 4, 9, 3, 10, 9, 7, 21];
            var arrGet = $.grep(arrNum, function(ele, index) {
                return ele > 5 && index < 8 //元素值大於5且序號小於8
            })
            strTmp += arrNum.join();
            strTmp += "<br/><br>篩選後數據:"
            strTmp += arrGet.join();
            $("#divTip").append(strTmp);
        })
    </script>

 

4.數據變動

若是要指定條件修改數組中的所選元素,須要另一個工具函數$.map(),其調用的語法格式以下:

$.map(array,callback(elementOfArray,indexInArray)

參數array爲要篩選的原數組,回調函數fn中能夠設置兩個參數,其中elementOfArray爲數組中的元素,indexInArray爲元素中的序列號。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var strTmp = "變動前數據:";
            var arrNum = [2, 8, 3, 7, 4, 9, 3, 10, 9, 7, 21];
            var arrGet = $.map(arrNum, function(ele, index) {
                if (ele > 5 && index < 8) { //元素值大於5且序號小於8
                    return ele + 1; //元素增長1
                }
            })
            strTmp += arrNum.join();
            strTmp += "<br/><br>變動後數據:"
            strTmp += arrGet.join();
            $("#divTip").append(strTmp);
        })
    </script>

結果:

 

 5.數據搜索

在工具函數$.inArray()中,入股哦找到了制定的某個元素,則返回鈣元素在數組中的索引號,不然返回-1值。其調用的格式以下所示:

$.inArray(value,array)

其中,參數value表示要搜索的對象,array表示搜索對象的數組

示例代碼:

    <script type="text/javascript">
        $(function() {
            var strTmp = "待搜索數據:";
            var arrNum = [4, 21, 2, 12, 5];
            var arrPos = $.inArray(21, arrNum);
            strTmp += arrNum.join();
            strTmp += "<br/><br>搜索後結果:"
            strTmp += arrPos;
            $("#divTip").append(strTmp);
        })
    </script>

結果:

6.字符串操做

在jquery中,入股要除掉字符中左右裏愛你改變的空格符,可使用工具函數$.teim()。該函數經常使用語字符串的操做,也是jquery和辛苦中惟一針對字符串操做的工具函數,其調用的語法格式以下所示:

$.trim(str)

其中,參數str爲須要刪除左右邊空格符的字符串。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var strTmp = "內容:";
            var strOld = "  jQuery,write less do more    ";
            var strNew = $.trim(strOld);
            strTmp += strOld;
            strTmp += "<br/><br>除掉空格符前的長度:"
            strTmp += strOld.length;
            strTmp += "<br/><br>除掉空格符後的長度:"
            strTmp += strNew.length;
            $("#divTip").append(strTmp);
        })
    </script>

結果:

7.測試操做

7-1.檢測對象是否爲空

$.isEmptyObect()函數能夠檢測對象自己和原型集成屬性這兩個特徵是否爲空,對象的原型集成屬性是指對象是否使用hasOwnProperty,擁有本身的屬性名稱。

$.isEmptyObect()函數的參數是一個普通的javascript對象,該函數返回true時,表示是一個空對象,不然爲一個非空對象。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var obj0 = {};
            var obj1 = { "name": "taoguorong" };
            var strTmp = "obj0是否爲空:" + $.isEmptyObject(obj0);
            strTmp += "<br><br>obj1是否爲空:" + $.isEmptyObject(obj1);
            $("#divTip").append(strTmp);
        })
    </script>

結果:

7-2.檢測對象是否爲原始對象

經過$.isPlainObject()函數檢測對象是不是一個純粹、原始的對象,即對象是否經過{}或new Object()關鍵則建立。

示例代碼:

    <script type="text/javascript">
        $(function() {
            var obj0 = {};
            var obj1 = new Object();
            var obj2 = "null";
            var strTmp = "obj0是否爲原始對象:" + $.isPlainObject(obj0);
            strTmp += "<br><br>obj1是否爲原始對象:" + $.isPlainObject(obj1);
            strTmp += "<br><br>obj2是否爲原始對象:" + $.isPlainObject(obj2);
            $("#divTip").append(strTmp);
        })
    </script>

 

7-3.檢測兩個節點的包含關係

$.cntains()函數的做用是檢測在一個DOM節點中是否包含另一個DOM節點,其調用的語法格式以下:

$.contains(container,contained)

其中,參數container爲Object,是一個DOM元素,做爲容器能夠包容其餘DOM元素;參數contained也是一個DOM節點,可能被其餘元素所包含。整個函數返回一個布爾值,若是container對象包含contained對象,則結果爲true,不然結果爲false。

 

8.URL操做

URL操做即,使用seralize()方法來徐立華表單向服務器提交的數據,而serialize()方法的核心就是工具函數$.param()。經過該函數可使用數組或工具jquery對象按照name/value的格式進行序列化,普通對象按照key/value的格式進行序列化。

工具函數$.param()的調用語法格式爲:

$.param(obj.[traditional])

其中,參數obj表示須要進行序列化的對象,該對象能夠是數組、jquery元素、普通對象。可選項參數[traditional]表示是否使用普通的方式恰能序列化,該函數返回一個序列化後的字符串。

 

9.其餘工具函數

9-1.$.proxy()函數

$.proxy()函數返回一個新的函數,而且這個函數始終個保持特定的做用域。當一個事件函數被元素幫i的那個時,其做用域原則上應指向鈣元素,可是有些時間函數的做用域,在被元素綁定時並不僅想元素自己,而是指向另一個對象。這時,爲了使用元素的綁定事件能正常執行,必須調用$.proxy()函數進行處理,通過處理後的事件函數不只能夠被綁定的元素執行,並且還能夠傳遞原先函數取消事件的綁定,該函數調用的語法格式爲:

$.proxy(function,scope)

其中,參數function爲要改變做用域的事件函數,參數scope爲被事件函數設置做用域的對象,即事件函數做用域將設置到該對象中.

該函數還有另一種調用方式,低嗎以下:

$.proxy(scope,name)

其中,參數scope爲被事件函數設定的做用域對象;參數name爲將要設置做用域的函數名,而且該參數必須是scope做用域對象的一個屬性。

 

11.工具函數的擴展

11-1.使用$.extend()擴展工具函數

  工具函數的擴展,其實質就是本身編寫類級別的插件用於擴展jquery對象自己。爲實現這一目的,咱們引入另一個工具函數$.extend().

  經過$.extend()函數能夠很方便地定義本身的工具函數。

示例代碼以下:

    <script type="text/javascript">
        /*------------------------------------------------------------/
        功能:返回兩個數中最大值
        參數:數字p1,p2
        返回:最大值的一個數
        示例:$.MaxNum(1,2);
        /------------------------------------------------------------*/
        ; (function($) {
            $.extend({
                "MaxNum": function(p1, p2) {
                    return (p1 > p2) ? p1 : p2;
                }
            });
        })(jQuery);

        /*------------------------------------------------------------/
        功能:返回兩個數中最小值
        參數:數字p1,p2
        返回:最小值的一個數
        示例:$.MinNum(1,2);
        /------------------------------------------------------------*/
        ; (function($) {
            $.extend({
                "MinNum": function(p1, p2) {
                    return (p1 > p2) ? p2 : p1;
                }
            });
        })(jQuery);
        
        $(function() {
            var strTmp = "5與6中最大的數是:";
            strTmp += $.MaxNum(5, 6);
            strTmp += "<br><br>7與8中最小的數是:";
            strTmp += $.MinNum(7, 8);
            $("#divTip").append(strTmp);
        })
    </script>

結果:

11-2.使用$.extend()擴展Object對象

  工具函數$.extend()除能夠擴展jquery自身函數外,還有另一個很強悍的功能,就是擴展已有的Object對象,其調用的語法格式爲:

$.extend(target,oject1,...[objectN])

其中,參數target表示合併後的對象;object爲被合併的對象,便可以將一個或多個對象合併成一個對象,最後返回該對象

相關文章
相關標籤/搜索