• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      用jQuery技術開發(fā)特色插件

      2014-07-25 11:29:04邢素萍
      微型電腦應用 2014年8期
      關鍵詞:表項插件調用

      邢素萍

      用jQuery技術開發(fā)特色插件

      邢素萍

      介紹了當前Web開發(fā)新技術jQuery技術中的插件的種類,插件開發(fā)的要點及如何編寫自定義插件。通過編寫插件講述了對象級別插件的開發(fā)及插件引用、類級別的插件開發(fā)及引用的方法。

      Web;插件引用;類級別

      0 引言

      近年來,WEB開發(fā)領域的新技術和新工具層出不窮,jQuery就是新技術之一,是業(yè)界最流行的JavaScript庫。jQuery 庫是專為加快JavaScript 開發(fā)速度而設計的。通過簡化編寫 JavaScript 的方式,減少代碼量。使用 jQuery 庫時,我們會發(fā)現(xiàn)在編程時經常為一些常用函數(shù)重寫相同的代碼。如果根據需要編寫自定義的jQuery 插件,就可以減少代碼的重寫。

      雖然,有大量優(yōu)秀的插件可供用戶免費下載使用,但開發(fā)人員更希望自己能編寫根據自身項目特點的插件。在jQuery中,編寫插件也不是一件很難的事,只要編寫的代碼符合插件的各項功能要求,就可以實現(xiàn)自定義各項功能的插件。本文介紹插件的基礎知識及如何編寫自定義插件。

      1 插件的種類的分析

      從廣義上來說,插件分為3類,即封裝方法插件、封閉函數(shù)插件、選擇器插件,最后一種很少人去開發(fā)使用,自定義的插件種類多數(shù)屬于前面兩種。

      封裝方法插件:封裝方法插件在本質上來說,是一個對象級別的插件,該類插件首先通過jQuery選擇器獲取對象,并為對象添加方法,然后,將方法進行打包,封裝成一個插件,這種類型的插件編寫簡單,極易調用,也很方便地使用了jQuery中功能強大的選擇器,因此,成為開發(fā)插件的首選。

      封閉函數(shù)插件:封閉函數(shù)插件是一個類級別的插件,該類插件的最大特點,就是可以直接給jQuery添加靜態(tài)方法,并且可以將函數(shù)置于jQuery命名空間中,如最為常見的就是$.ajax()、$.trim()全局性函數(shù),都是以內部插件的形式植入jQuery內核中。

      2 插件開發(fā)要點及注意的事項

      2.1插件的文件命名必須嚴格遵循jQuery.[插件名].js的規(guī)則,以便于區(qū)分其他js文件,如新插件文件jQuery.newqlugin.js。如果是對象級別插件,所有的方法都應依附于jquery.fn主體對象;如果是類級別插件,所有的方法都應依附于jquery對象。

      2.2在插件內部的代碼中,如果要訪問每個元素,可以使用this.each方法來遍歷全部元素。要注意,在插件的內部,this所代表的是通過jQuery選擇器所獲取的對象,而非傳統(tǒng)意義上的對象的引用。

      2.3盡量不要使用“$”符號,以避免與別的代碼沖突。在編寫對象級別的插件時,使用jQuery.fn.extend()方法進行功能擴展;而針對類級別的插件,則使用jQuery.extend()方法進行擴展。

      3 對象級別插件的開發(fā)

      我們通過一個開發(fā)插件示例,學習對象級別插件的開發(fā)及其引用。

      功能描述:在列表<ul〉元素中,鼠標在表項<li〉元素移動時,可以自定義其獲取焦點(focus)時的背景顏色,即設置表項<li〉元素選中時的背景色。

      搭建一個js文件,命名為jquery.lifocuscolor.js,并在文件中使用$.fn.extend()方法完成框架的搭建。其實現(xiàn)的代碼如下:

      /*--------------------------------------------------------/

      功能:設置列表中表項獲取鼠標焦點時

      參數(shù):li_col[可選]鼠標所在表項行的背景色

      返回:原調用對象

      示例:$(”ul”).focusColor(“red”);

      /--------------------------------------------------------*/

      ;(function($){

      $.fn.extend({

      “yourPluginName”: function(pran_value){

      //各種默認屬性或參數(shù)的設置

      This.each(functoun(){ //插件實現(xiàn)的代碼 }) } })})(jQuery);

      3.1 代碼編寫

      根據功能描述,在搭建框架中,首先設置插件的默認屬性值,由于允許用戶設置自己的顏色值,因此,創(chuàng)建一個顏色參數(shù),并對該值進行初始化設置,同時,根據參數(shù)是否為空,賦予該參數(shù)不同的顏色值;另外,設置一個變量保存丟失焦點時的顏色值,其實現(xiàn)的代碼如下所示:

      ;(function($){

      $.fn.extend({

      “focusColor”:function(li_col) {

      var def_col=”#ccc”;//默認獲取焦點的色值var lst_col=”#fff”;//默認丟失焦點的色值

      /

      /如果設置的顏色不為空,使用設置的顏色,否則為默認的顏色

      li_col=(li_col==undefined)?def_col : li_col ; //遍歷表項<”li”〉中的全部元素

      $(this).find(“l(fā)i”).each(function(){ }); } });

      })(jQuery);

      然后,在遍歷表項<li〉中,需針對對象編寫兩個事件,一個是鼠標移入事件mouseover(),在該事件中,將傳回的變量def_col值,設置為對象的背景色,其代碼如下:

      $(this).find(“l(fā)i”).each(function(){

      $(this).mouseover(function(){ //獲取焦點事件

      $(this).css(“background-color”,lst_col);//恢復原來的顏色 })

      })

      最后,編寫另外一個鼠標移出事件mouseout(),在該事件中,將背景色還原成鼠標移入前,被變量lst_col保存的顏色值,其代碼如下:

      $(this).find(“l(fā)i”).each(functoun(){

      $(this).mouseout(function(){ //鼠標焦點移出事件

      $(this).css(“background-color”, li_col); //恢復原來的顏色 })

      })

      由于這兩個事件可以進行合并鏈寫,因此,最終的代碼如下:

      $(this).find(“l(fā)i”).each(function(){ //遍歷表項<li〉中的全部元素

      $(this).mouseout(function(){ //獲取鼠標焦點事件

      $(this).css(“background-color”,li_col) ; //使用設置的顏色}).mouseout(function() { //鼠標焦點移出事件

      $(this).css(“background-color”,”#fff”) //恢復原來的顏色})})

      在代碼最后結果時,必須返回一個jQuery對象,以方便其調用對象的鏈寫操作,因此,最后加上一行返回jQuery對象的如下代碼:

      return $(this); // 返回jQuery對象,保持鏈式操作

      經過上述分析,js 文件jquery.liocuscolor.js最終完整的代碼如下所示:

      ;(function($){

      $.fn.extend({

      “focusColor”:function(li_col){

      var drf_col=”#ccc”; //默認獲取焦點的色值

      var lst_col=”#fff”; //默認丟失焦點的色值

      /

      / 如果設置的顏色不為空,使用設置的顏色,否則 為默認色

      li_col=(li_col==undefined) ? def_col : li_col;

      /

      / 遍歷表項<li〉 中的全部元素

      $(this).find(“l(fā)i”).each(function(){

      $(this).mouseover(function(){//獲取鼠標焦點事件

      $(this).css(“background-color”, li_col ); // 使用設置的顏色

      }).mouseout(function(){ // 鼠標焦點移出事件

      $(this).css(“background-color”,”#fff” ); //恢復原來的顏色}) });

      Return $(this); //返回jQuery對象,保持鏈式操作 } });

      })(jQuery);

      3.2 引用插件

      自己編寫的插件保存為js文件后,就可以象其它插件一樣,被需要使用的文件所調用,其使用的方法也是一樣,先引入js文件,然后在js代碼中調用該插件中的各種方法。為了驗證文件jquery.lifocuscolor.js中插件功能,新創(chuàng)建一個html文件p_Xsp.html,引入該文件,并調用該插件的方法,其加入的代碼如下:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"〉<html xmlns="http://www.w3.org/1999/xhtml"〉

      <head〉

      <title〉編寫一個對象級別的插件</title〉

      <script type="text/javascript" src="Jscript/jquery-1.4.2-vsdoc.js"〉

      </script〉

      <script type="text/javascript" src="Jscript/jquery-1.4.2.js"〉

      </script〉

      <script type="text/javascript" src="Plugin/jquery.lifocuscolor.js"〉

      </script〉

      <style type="text/css"〉

      body{font-size:12px}

      .divFrame{width:260px;border:solid 1px #666}

      .divFrame .divTitle{padding:5px;background-color:#eee;font -weight:bold}

      .divFrame .divContent{padding:8px;line-height:1.6em} .divFrame .divContent

      ul{padding:0px;margin:0px;list-style-type:none}

      .divFrame .divContent ul li span{margin-right:20px}</style〉

      <script type="text/javascript"〉

      $(function() {

      $("#u1").focusColor("red");//調用自定義的插件

      })</script〉

      </head〉

      <body〉

      <div class="divFrame"〉

      <div class="divTitle"〉

      對象級別的插件

      </div〉

      <div class="divContent"〉

      <ul id="u1"〉

      <li〉<span〉張大海</span〉<span〉男</span〉</li〉

      <li〉<span〉李麗萍</span〉<span〉女</span〉</li〉

      <li〉<span〉王健康</span〉<span〉男</span〉</li〉

      </ul〉

      </div〉

      </div〉

      </body〉

      </html〉

      執(zhí)行html文件p_Xsp.html后的效果圖,如圖1所示:

      圖1 使用默認色值

      執(zhí)行$(“#u1”).fousColor()使用默認色值,當鼠標指向“李麗萍”時,執(zhí)行$(“#u1”).fousColor(“red”),是自定義色值,如圖2所示:

      4 類級別的插件開發(fā)

      類級別的插件開發(fā)就是給jQuery類添加類方法,可以理解為添加靜態(tài)方法。典型的例子就是$.AJAX()這個函數(shù),將函數(shù)定義于jQuery的命名空間中。關于類級別的插件開發(fā)可以采用如下幾種形式進行擴展:

      4.1 添加一個新的全局函數(shù)

      添加一個全局函數(shù),我們只需如下定義:

      jQuery.foo = function() { alert('This is a test. This is onl y a test.'); };

      4.2 增加多個全局函數(shù)

      添加多個全局函數(shù),可采用如下定義:

      jQuery.foo = function() { alert('This is a test. This is only a test.') };

      jQuery.bar = function(param) { alert('This function takes a parameter, which is "' + param + '".'); };

      調用時和調用一個函數(shù)是一樣的:jQuery.foo();jQuery.bar();或者$.foo();$.bar('bar');

      4.3 使用jQuery.extend(object);

      jQuery.foo = function() { alert('This is a test. This is only a test.'); };

      jQuery.bar = function(param) { alert('This function takes a parameter, which is "' + param + '".'); };

      調用時和一個函數(shù)的一樣的:jQuery.foo();jQuery.bar();或者$.foo();$.bar('bar');

      jQuery.extend({

      foo: function() {

      alert('This is a test. This is only a test.'); },

      bar: function(param) { alert('This function takes a parameter, which is "' + param +'".'); } });

      4.4一個類級別插件開發(fā)的實例:

      4.4.1 功能描述

      新增兩個類級別的全局函數(shù),分別用于計算兩數(shù)之和與兩數(shù)之差,并將結果返回調用的頁面中。

      4.4.2 搭建框架

      新建一個jquery.two.js文件,使用$.extend()方法完成框架的搭建,其實現(xiàn)的代碼如下:

      /*--------------------------------------------------------------/

      功能:計算二個數(shù)字相加或相關的結果

      參數(shù):數(shù)字p1,p2

      返回:兩數(shù)相加后的結果

      示例:$AddNum(1,2);

      /----------------------------------------------------------------------*/

      ;(function($){

      $.extend({ “yourPlugin-Name”:function(pram_value){

      //插件實現(xiàn)的代碼 }

      })

      })(jQuery);

      4.4.3 代碼的編寫

      根據功能描述,編寫一個用于計算兩數(shù)之和的全局函數(shù),該函數(shù)先對用戶傳來的兩個參數(shù)進行檢測,判斷其是否為undefined類型,以獲取其最終用于計算的值,然后通過return語句,返回其最終的計算結果,其實現(xiàn)的代碼如下:

      “addNum”: function(p1,p2) {

      //如果傳入的數(shù)字不為空,使用傳入的數(shù)字,否則為0

      p1=(p1==undefined) ? 0 : p1;

      p2=(p2==undefined) ? 0 : p2;

      var intResult=parseInt(p1)+parseInt(p2);

      return intResult;

      }

      然后,使用同樣的方式,增加一個用戶計算兩數(shù)之差的全局函數(shù),由于最后返回一個兩數(shù)相減的結果,因此在進行基本檢測后,判斷第一個參數(shù)是否大于第二個參數(shù),如果大于,則返回前者減去后者的結果,其實現(xiàn)的代碼如下:

      “subNum”: function( p1, p2) {

      /

      /如果傳入的數(shù)字不為空,使用傳入的數(shù)字,否則為0

      var intResult=0;

      p1=(p1==undefined) ? 0 : p1;

      p2=(p2==undefined) ? 0 : p2;

      if(p1〉p2){//如果傳入的參數(shù)前者大于后者intResult=parseInt(p1)-parseInt(p2); } return intResult; }

      最后,使用jQuert.extend()方法,直接對jQuery對象進行拓展,以擴充其全局函數(shù),其最終實現(xiàn)的完整代碼如下

      ;(function($) {

      $.extend({

      “addNum”:function(p1,p2){

      //如果傳入的數(shù)字不為空,使用傳入的數(shù)字,否則為0

      p1=(p1==undefined) ? 0 : p1;

      p2=(p2==undefined) ? 0 : p2;

      var intResult=parseInt(p1)+parseInt(p2); return intResult; },

      “subNum”: function(p1,p2) {

      //如果傳入的數(shù)字不為空,使用傳入的數(shù)字,否則為0

      var intResult=0;

      p1=(p1==undefined) ? 0 : p1;

      p2=(p2==undefined) ? 0 : p2;

      if(p1〉p2){//如果傳入的參數(shù)前者大于后者intResult=parseInt(p1)-parseInt(p2); }

      return intResult; } });

      })(jQuery);

      4.4.4 插件的引用

      與引用對象級別插件一樣,類級別的插件也是先在<script〉標記中導入插件的js文件,然后編寫js代碼,調用插件中的公用方法或函數(shù)。

      為檢測插件的功能,新建一個HTML文件pp_Two.html,在頁面中,單擊上下兩個“等于”按鈕后,分別調用插件中的全局函數(shù)addNum與subNum,計算文本框中的兩數(shù)之和與兩數(shù)之差。其實現(xiàn)的代碼如下:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"〉

      <html xmlns="http://www.w3.org/1999/xhtml"〉

      <head〉

      <title〉編寫一個類級別的插件</title〉

      <script type="text/javascript" src="Jscript/jquery-1.4.2-vsdoc.js"〉

      </script〉

      <script type="text/javascript" src="Jscript/jquery-1.4.2.js"〉

      </script〉

      <script type="text/javascript" src="Plugin/jquery.two.js"〉

      </script〉

      <style type="text/css"〉

      body{font-size:12px}

      .divFrame{width:260px;border:solid 1px #666}

      .divFrame .divTitle{padding:5px;background-color:#eee;f ont-weight:bold}

      .divFrame .divContent{padding:8px;line-height:1.6em}

      .txt{border:#666 1px solid;padding:2px;

      width:150px;margin-right:3px;width:16px}

      .btn {border:#666 1px solid;padding:2px;width:50px;

      filter:progid:DXImageTransform.Microsoft.Gradient(Grad ientType=0,StartColorStr=#ffffff, EndColorStr=#ECE9D8);}

      </style〉

      <script type="text/javascript"〉

      $(function() {

      $("#Button1").click(function() {

      $("#Text3").val(

      $.addNum($("#Text1").val(),

      $("#Text2").val()));

      }); //調用自定義的插件計算兩數(shù)之和

      $("#Button2").click(function() {

      $("#Text6").val(

      $.subNum($("#Text4").val(),

      $("#Text5").val()));

      }) //調用自定義的插件計算兩數(shù)之差})

      </script〉

      </head〉

      <body〉

      <div class="divFrame"〉

      <div class="divTitle"〉 類級別的插件

      </div〉

      <div class="divContent"〉輸入兩數(shù)相加:

      <input id="Text1" type="text" class="txt" /〉 +

      <input id="Text2" type="text" class="txt" /〉 =

      <input id="Text3" type="text" class="txt" /〉

      <input id="Button1" type="button"

      value="等于" class="btn" /〉

      <hr /〉輸入兩數(shù)相減:

      <input id="Text4" type="text" class="txt" /〉- 

      <input id="Text5" type="text" class="txt" /〉 =

      <input id="Text6" type="text" class="txt" /〉

      <input id="Button2" type="button"

      value="等于" class="btn"/〉

      </div〉

      </div〉

      </body〉

      </html〉

      執(zhí)行html文件pp_Two.html后,點擊第1個“等于”按鈕,調用全局函數(shù)$.addNum(p1,p2)計算兩數(shù)之和,點擊第2個“等于”按鈕調用全局函數(shù)$.addNum(p1,p2)計算兩數(shù)之差,頁面效果如圖3所示:

      圖3 引用自定義的類級別插件

      5 總結

      無論是編寫對象級別的插件,還是編寫類級別的插件,都要嚴格遵守插件開發(fā)的要素,先搭框架,后進行開發(fā),不同的插件使用不同的拓展方法。根據需要編寫自定義的jQuery 插件,可以減少代碼的重寫,加快 JavaScript 開發(fā)速度,可極大地推動WEB開發(fā)技術的發(fā)展。

      [1] 《鋒利的jQuery(第2版)》單東林,張曉菲,魏然 編著 人民郵電出版社

      [2] 《jQuery實戰(zhàn)》 (美國)BearBibeault (美國)YehudaKatz人民郵電出版社

      Using jQuery Technology to Develop Special Plug-Ins

      Xing Suping
      (Nanjing Institute of Industry Technology,Nanjing210046,China)

      This paper introduces new types of jQuery plug-in in the current development of Web technology, key points of plug-in development and how to write a user-defined plug-in. The plug-in compiling shows the development and references on both object level and class level.

      Web; Plug-In references; Class Level

      TP311

      A

      2014.04.01)

      邢素萍(1957-),南京工業(yè)職業(yè)技術學院,教授,研究方向:計算機應用與多媒體教學,南京,210046

      1007-757X(2014)08-0059-06

      猜你喜歡
      表項插件調用
      一種改進的TCAM路由表項管理算法及實現(xiàn)
      通信技術(2022年5期)2022-06-11 00:47:44
      基于ARMA模型預測的交換機流表更新算法
      自編插件完善App Inventor與樂高機器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      核電項目物項調用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調用
      測控技術(2018年5期)2018-12-09 09:04:46
      SDN數(shù)據中心網絡基于流表項轉換的流表調度優(yōu)化
      基于系統(tǒng)調用的惡意軟件檢測技術研究
      MapWindowGIS插件機制及應用
      基于Revit MEP的插件制作探討
      利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
      精河县| 乌什县| 商城县| 聂荣县| 民丰县| 卢龙县| 伊宁县| 油尖旺区| 秦皇岛市| 明水县| 红桥区| 三门峡市| 惠东县| 开封县| 定陶县| 顺平县| 临清市| 湟源县| 武汉市| 东乡县| 花莲县| 靖宇县| 区。| 莱州市| 甘德县| 固阳县| 胶州市| 大同市| 兴化市| 日喀则市| 射阳县| 西城区| 抚顺市| 鹿邑县| 普格县| 贵定县| 甘洛县| 东阳市| 牟定县| 仲巴县| 剑川县|