修改或擴(kuò)展jQuery原生方法的代碼實(shí)例
修改或者擴(kuò)展jQuery的方法代碼實(shí)例:
毫無疑問,jQuery是一款功能強(qiáng)大且使用方便的類庫。
從它的廣泛應(yīng)用可以證實(shí)上面的觀點(diǎn),但是正所謂人無完人,金無足赤,jQuery也是如此,并非在任何時(shí)候或者場(chǎng)合都能夠完美的完成我們的任務(wù),所以有事以后就需要對(duì)jQuery原有的方法進(jìn)行擴(kuò)展修改,但是最好方法仍然具有原來的功能。
代碼實(shí)例:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<title>腳本之家</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">腳本之家</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è)置元素
- 原生js實(shí)現(xiàn)復(fù)制對(duì)象、擴(kuò)展對(duì)象 類似jquery中的extend()方法
- 淺談jQuery中的$.extend方法來擴(kuò)展JSON對(duì)象
- 基于jQuery的一個(gè)擴(kuò)展form序列化到j(luò)son對(duì)象
- 模仿JQuery.extend函數(shù)擴(kuò)展自己對(duì)象的js代碼
- 擴(kuò)展jQuery對(duì)象時(shí)如何擴(kuò)展成員變量具體怎么實(shí)現(xiàn)
- JQuery 動(dòng)態(tài)擴(kuò)展對(duì)象之另類視角
- jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法示例詳解
- Jquery 的擴(kuò)展方法總結(jié)
- Jquery中擴(kuò)展方法extend使用技巧
- JavaScript自執(zhí)行函數(shù)和jQuery擴(kuò)展方法詳解
- JQuery擴(kuò)展對(duì)象方法操作示例
相關(guān)文章
終于實(shí)現(xiàn)了!精彩的jquery彈幕效果
終于實(shí)現(xiàn)精彩的jquery彈幕效果了,這篇文章就為大家詳細(xì)介紹了jquery彈幕效果的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07JQuery.uploadify 上傳文件插件的使用詳解 for ASP.NET
今天下午整理文件上傳的例子,感覺收集到的例子都很不人性話,后來找到一個(gè)還可以的,本來想改成類似于騰訊QQ相冊(cè)那種方式,仔細(xì)看了一下是Flash的, 而且那個(gè)極速上傳插件也不知道用什么做的?問了一下,說是什么cgi. 搞得一頭霧水2010-01-01拉動(dòng)滾動(dòng)條加載數(shù)據(jù)的jquery代碼
拉動(dòng)滾動(dòng)條加載數(shù)據(jù)的jquery代碼,需要的朋友可以參考下2012-05-05給jqGrid數(shù)據(jù)行添加修改和刪除操作鏈接(之一)
我這里用的不是jqGrid的自帶的編輯和刪除操作,我已經(jīng)把分頁導(dǎo)航欄下的編輯,刪除,搜索都取消掉了2011-11-11基于jQuery實(shí)現(xiàn)的扇形定時(shí)器附源碼下載
這篇文章給大家介紹基于jquery實(shí)現(xiàn)的扇形定時(shí)器,涉及到pietimer知識(shí)點(diǎn)的學(xué)習(xí),對(duì)jquery定時(shí)器感興趣的朋友一起了解了解吧2015-10-10instanceof和typeof運(yùn)算符的區(qū)別詳解
兩個(gè)運(yùn)算符雖然比較相似,其實(shí)區(qū)別還是非常大的,雖然不難區(qū)別,但是對(duì)于初學(xué)者可能稍有困擾,下面就簡(jiǎn)單介紹一下它們兩者的區(qū)別,希望對(duì)需要的朋友有所幫助2014-01-01jquery.cookie.js實(shí)現(xiàn)用戶登錄保存密碼功能的方法
這篇文章主要介紹了jquery.cookie.js實(shí)現(xiàn)用戶登錄保存密碼功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了jquery.cookie.js插件操作cookie實(shí)現(xiàn)保存用戶登錄信息的相關(guān)技巧,需要的朋友可以參考下2016-04-04jQuery實(shí)現(xiàn)統(tǒng)計(jì)復(fù)選框選中數(shù)量
這里給大家分享一段jQuery實(shí)現(xiàn)的統(tǒng)計(jì)復(fù)選框選中數(shù)量的代碼,非常的實(shí)用,有需要的小伙伴們請(qǐng)帶走!2014-11-11JQuery對(duì)ASP.NET MVC數(shù)據(jù)進(jìn)行更新刪除
這篇文章主要介紹了JQuery對(duì)ASP.NET MVC數(shù)據(jù)進(jìn)行更新刪除的相關(guān)資料,需要的朋友可以參考下2016-07-07