最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在JavaScript中重寫(xiě)jQuery對(duì)象的方法實(shí)例教程

 更新時(shí)間:2014年08月25日 09:14:24   投稿:shichen2014  
這篇文章主要介紹了在JavaScript中重寫(xiě)jQuery對(duì)象的方法,在某些情況下jQuery無(wú)法滿(mǎn)足應(yīng)用開(kāi)發(fā)的時(shí)候可以采用javascript重寫(xiě)jQuery方法來(lái)滿(mǎn)足功能的實(shí)現(xiàn),需要的朋友可以參考下

jQuery是一個(gè)款非常優(yōu)秀的類(lèi)庫(kù),它給我們解決了很多的客戶(hù)端編程,但是任何東西都不是萬(wàn)能的,當(dāng)它不能滿(mǎn)足我們的需求時(shí)我們就需要對(duì)它進(jìn)行重寫(xiě),同時(shí)也不要影響其原有的功能或者修改其原有的功能;比如我現(xiàn)在的web應(yīng)用程序大多數(shù)時(shí)候的數(shù)據(jù)交互都是通過(guò)Ajax來(lái)完成的,這樣就可以將一些隱藏字段的數(shù)據(jù)保存在HTML標(biāo)簽的屬性中,使HTML標(biāo)簽的代碼量減少,如:ID,Timestamp等等,這些不需要用戶(hù)輸入但又不得不提交的字段,通過(guò)表單提交的做法是

<input name="ID" value="343" type="hidden" /> 

把ID的值保存在一個(gè)隱藏標(biāo)簽中,然后隨表單提交。

代碼如下所示:

<div>
<label data-field="id" data-property="data-id" data-id="343">First Name</label><input type="text" data-field="FirstName" />
</div>

注意藍(lán)色的部分這個(gè)屬性名稱(chēng)請(qǐng)不要太在意,您完全可以取一些更簡(jiǎn)潔名字,現(xiàn)在我們來(lái)重寫(xiě)jQuery的val方法來(lái)讀取和設(shè)置data-id的值,給$.prototype.val重新定義一個(gè)函數(shù),以閉包的形式將基類(lèi)函數(shù)傳入,以便在新函數(shù)中調(diào)用它,看下面這段代碼:

<script>
    $.prototype.val = function (base) {
      return function () {
        var s = this, a = "data-property", p = s.attr(a), isset = arguments.length > 0, v = isset ? arguments[0] : null;
         //這里調(diào)用基類(lèi)方法,當(dāng)然基類(lèi)方法在何時(shí)調(diào)用或者是否要調(diào)用取決于您的業(yè)務(wù)邏輯,在這里我們是要調(diào)用的,因?yàn)橐3炙械墓δ堋?
        if (isset&&typeof(base)=="function") { base.call(s, v); } else { v = base.call(s); }
        if (p) {
          if (isset) { s.attr(p, v); return s }
          else { return s.attr(p) }
        }
        else {
          if (!s.is(":input"))
          { if (isset) { s.text(v); return s; } else { return s.text(); } }
          else { return isset ? s : v; }
        }
        
      }
      //在這里傳入基類(lèi)方法
    }($.prototype.val);
</script>

 這個(gè)重寫(xiě)了之后,當(dāng)在標(biāo)簽中指定了data-property屬性時(shí),jQuery對(duì)象調(diào)用val() 等同于調(diào)用attr("data-property"),但沒(méi)有指定data-property也就是默認(rèn)情況下,如果是非表單元素則是val()等同于text(),如果是表單元素則保持原來(lái)的功能也就是讀寫(xiě)value屬性的值,這樣就可以通過(guò)這種方式:$("[data-field='id']").val(345)和$("[data-field='id']").val() 讀取或者設(shè)置它的值了,“data-field” 這個(gè)屬性將會(huì)映射到服務(wù)器上對(duì)應(yīng)類(lèi)型的字段中,關(guān)于重寫(xiě)JavaScript中的jQuery的方法就到這里了,其他方法的重寫(xiě)是異曲同工的,大家可以舉一反三的思考。

全部代碼如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>在JavaScript中重寫(xiě)對(duì)象的方法</title>
  <script src="Scripts/jquery-1.8.2.min.js"></script>
  <script src="Scripts/jquery-ui-1.8.24.min.js"></script>
  <script>
    $.prototype.val = function (base) {
      return function () {
        var s = this, a = "data-property", p = s.attr(a), isset = arguments.length > 0, v = isset ? arguments[0] : null;
        if (isset&&typeof(base)=="function") { base.call(s, v); } else { v = base.call(s); }
        if (p) {
          if (isset) { s.attr(p, v); return s }
          else { return s.attr(p) }
        }
        else {
          if (!s.is(":input"))
          { if (isset) { s.text(v); return s; } else { return s.text(); } }
          else { return isset ? s : v; }
        }
      }
    }($.prototype.val);
  </script>
</head>
<body>
  <span id="lbl">Hello world!</span>
  <input type="text" id="txt" value="hello world" />
  <input type="checkbox" value="哈哈哈。。。" />
</body>
</html>

希望本文所述對(duì)大家的web前段設(shè)計(jì)有所幫助。

相關(guān)文章

  • jQuery JSON實(shí)現(xiàn)無(wú)刷新三級(jí)聯(lián)動(dòng)實(shí)例探討

    jQuery JSON實(shí)現(xiàn)無(wú)刷新三級(jí)聯(lián)動(dòng)實(shí)例探討

    無(wú)刷新三級(jí)聯(lián)動(dòng)的實(shí)現(xiàn)方法有很多,今天將與大家討論下jQuery JSON如何實(shí)現(xiàn),感興趣的朋友們可以參考下哈
    2013-05-05
  • 360提示[高危]使用存在漏洞的JQuery版本的解決方法

    360提示[高危]使用存在漏洞的JQuery版本的解決方法

    今天用360檢測(cè)網(wǎng)站,提示高危]使用存在漏洞的JQuery版本,說(shuō)是這個(gè)文件有問(wèn)題jquery.min.js,這里腳本之家小編就為大家分享一下解決方法
    2017-10-10
  • 正負(fù)小數(shù)點(diǎn)后兩位浮點(diǎn)數(shù)實(shí)現(xiàn)原理及代碼

    正負(fù)小數(shù)點(diǎn)后兩位浮點(diǎn)數(shù)實(shí)現(xiàn)原理及代碼

    需要做個(gè)對(duì)兩位小數(shù)點(diǎn)的正負(fù)浮點(diǎn)數(shù)的處理要求:非數(shù)字或者.字符自動(dòng)清除,并對(duì).12自動(dòng)修補(bǔ).前的0,實(shí)現(xiàn)原理如下,感興趣的朋友可以參考下
    2013-09-09
  • 基于jquery的一行代碼輕松實(shí)現(xiàn)拖動(dòng)效果

    基于jquery的一行代碼輕松實(shí)現(xiàn)拖動(dòng)效果

    寫(xiě)JS實(shí)現(xiàn)拖動(dòng)需要一大堆不便維護(hù)的代碼,實(shí)屬麻煩,Google了大半天,發(fā)現(xiàn)了一個(gè)優(yōu)秀的Jquery插件EasyDrag,只需要一行代碼便可輕松在主流瀏覽器上。
    2010-12-12
  • JQuery的read函數(shù)與js的onload不同方式實(shí)現(xiàn)

    JQuery的read函數(shù)與js的onload不同方式實(shí)現(xiàn)

    JQuery的read函數(shù)與js的onload,想必大家對(duì)這兩個(gè)方法都有所熟悉吧,接下來(lái)介紹一個(gè)實(shí)例用以上兩種方法各自實(shí)現(xiàn),感興趣的你可不要錯(cuò)過(guò)了哈,希望可以幫助到你
    2013-03-03
  • jQuery學(xué)習(xí)筆記之回調(diào)函數(shù)

    jQuery學(xué)習(xí)筆記之回調(diào)函數(shù)

    回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù).這篇文章主要介紹了jQuery學(xué)習(xí)筆記之回調(diào)函數(shù)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 利用jQuery 實(shí)現(xiàn)GridView異步排序、分頁(yè)的代碼

    利用jQuery 實(shí)現(xiàn)GridView異步排序、分頁(yè)的代碼

    經(jīng)常會(huì)用到j(luò)query.ui.tabs標(biāo)簽,如我們可以把備份管理放在一個(gè)頁(yè)面上,而該頁(yè)面有兩個(gè)tab分別為備份和還原,但這樣會(huì)現(xiàn)在這個(gè)頁(yè)面臃腫
    2010-02-02
  • 使用prop解決一個(gè)checkbox選中后再次選中失效的問(wèn)題

    使用prop解決一個(gè)checkbox選中后再次選中失效的問(wèn)題

    下面小編就為大家?guī)?lái)一篇使用prop解決一個(gè)checkbox選中后再次選中失效的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • jQuery中triggerHandler()方法用法實(shí)例

    jQuery中triggerHandler()方法用法實(shí)例

    這篇文章主要介紹了jQuery中triggerHandler()方法用法,實(shí)例分析了triggerHandler()方法的功能、定義及觸發(fā)被選元素的指定事件類(lèi)型的使用技巧,需要的朋友可以參考下
    2015-01-01
  • 深入學(xué)習(xí)jQuery中的data()

    深入學(xué)習(xí)jQuery中的data()

    大家應(yīng)該都會(huì)有這樣一種感覺(jué),data函數(shù)在jQuery中看起來(lái)很不起眼, 就像沙灘上一顆平凡的沙子, 但仔細(xì)一瞅, 卻驚訝的發(fā)現(xiàn)data是jQuery中無(wú)比重要的一環(huán), 甚至jQuery中各種事件都基于此。下面就來(lái)詳細(xì)深入的學(xué)習(xí)下jQuery中的data(),感興趣的朋友們可以參考借鑒。
    2016-12-12

最新評(píng)論

开远市| 东阿县| 宜川县| 巴楚县| 临邑县| 弥渡县| 沙坪坝区| 孝义市| 视频| 甘谷县| 中方县| 绥宁县| 东山县| 虎林市| 泾阳县| 靖边县| 元谋县| 信丰县| 房山区| 伽师县| 仁化县| 玉屏| 溆浦县| 长子县| 炉霍县| 石台县| 阿瓦提县| 宜章县| 南投县| 玉山县| 英吉沙县| 顺昌县| 临沭县| 保山市| 象州县| 商南县| 灵石县| 瓦房店市| 乐山市| 左贡县| 库尔勒市|