修改或者擴(kuò)展jQuery的方法代碼實(shí)例:
毫無疑問,jQuery是一款功能強(qiáng)大且使用方便的類庫。
從它的廣泛應(yīng)用可以證實(shí)上面的觀點(diǎn),但是正所謂人無完人,金無足赤,jQuery也是如此,并非在任何時(shí)候或者場合都能夠完美的完成我們的任務(wù),所以有事以后就需要對(duì)jQuery原有的方法進(jìn)行擴(kuò)展修改,但是最好方法仍然具有原來的功能。
代碼實(shí)例:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title>Gxl網(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">Gxl網(wǎng)</span> <input type="text" id="txt" value="softwhy.com" /> <input type="checkbox" value="antzone" /> <p id="show"></p> </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è)置元素
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com