国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

修改或擴(kuò)展jQuery原生方法的代碼實(shí)例

2019-11-20 13:25:35
字體:
供稿:網(wǎng)友

修改或者擴(kuò)展jQuery的方法代碼實(shí)例:

毫無疑問,jQuery是一款功能強(qiáng)大且使用方便的類庫。

從它的廣泛應(yīng)用可以證實(shí)上面的觀點(diǎn),但是正所謂人無完人,金無足赤,jQuery也是如此,并非在任何時(shí)候或者場(chǎng)合都能夠完美的完成我們的任務(wù),所以有事以后就需要對(duì)jQuery原有的方法進(jìn)行擴(kuò)展修改,但是最好方法仍然具有原來的功能。

代碼實(shí)例:

復(fù)制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>武林網(wǎng)</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$.prototype.val = function (base) {
  return function () {
    var s = this;
    var a = "data-property";
    var p = s.attr(a);
    var isset = arguments.length > 0;
    var 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);
$(document).ready(function(){
  $("#show").html($("#lbl").val()+"<br>"+$("#txt").val());
})
</script>
</head>
<body>
<span id="lbl">武林網(wǎng)</span>  
<input type="text" id="txt" value="softwhy.com" />
<input type="checkbox" value="antzone" />
<div id="show"></div>
</body>
</html>

上面的代碼毫無疑問是對(duì)jQuery的val()方法做的擴(kuò)展,下面介紹一下它的實(shí)現(xiàn)過程。

代碼注釋:

1.$.prototype.val = function (base) {}(($.prototype.val),修改jQuery原來的val()方法,這里采用閉包的方式,傳遞的參數(shù)是原來的val()方法,以保持原來val()方法的功能。
2.return function (){},返回一個(gè)函數(shù)對(duì)象。
3.var s = this,將this的指向引用賦值給變量s,這里的this是指向jQuery對(duì)象實(shí)例的。
4.var a = "data-property",聲明一個(gè)變量并賦值,關(guān)于它的更多內(nèi)容面會(huì)介紹。
5.var p = s.attr(a),其實(shí)data-property就是標(biāo)簽上的一個(gè)自定義屬性,那么這段代碼就是獲取此屬性值。
6.var isset = arguments.length > 0,判斷修改后的val()方法是否傳遞了參數(shù)。
7.var v = isset ? arguments[0] : null,如果傳遞參數(shù),那么久獲取第一個(gè)參數(shù),其他的忽略。
8.if (isset&&typeof(base)=="function") {
  base.call(s, v);
},如果傳遞了參數(shù),且base參數(shù)是一個(gè)函數(shù),那么就調(diào)用base函數(shù)設(shè)置元素

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 旺苍县| 综艺| 沁源县| 奉化市| 武邑县| 且末县| 定日县| 安泽县| 湘潭县| 准格尔旗| 江华| 洛阳市| 乳山市| 县级市| 修武县| 蓬莱市| 崇阳县| 颍上县| 吉林省| 永寿县| 衡东县| 云南省| 清流县| 景谷| 南靖县| 桐柏县| 沈丘县| 滦南县| 天等县| 郁南县| 平昌县| 元谋县| 和顺县| 江源县| 宁陕县| 奉新县| 大关县| 融水| 区。| 高碑店市| 林口县|