修改或擴(kuò)展jQuery原生方法的代碼實例
修改或者擴(kuò)展jQuery的方法代碼實例:
毫無疑問,jQuery是一款功能強(qiáng)大且使用方便的類庫。
從它的廣泛應(yīng)用可以證實上面的觀點,但是正所謂人無完人,金無足赤,jQuery也是如此,并非在任何時候或者場合都能夠完美的完成我們的任務(wù),所以有事以后就需要對jQuery原有的方法進(jìn)行擴(kuò)展修改,但是最好方法仍然具有原來的功能。
代碼實例:
<!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>
上面的代碼毫無疑問是對jQuery的val()方法做的擴(kuò)展,下面介紹一下它的實現(xiàn)過程。
代碼注釋:
1.$.prototype.val = function (base) {}(($.prototype.val),修改jQuery原來的val()方法,這里采用閉包的方式,傳遞的參數(shù)是原來的val()方法,以保持原來val()方法的功能。
2.return function (){},返回一個函數(shù)對象。
3.var s = this,將this的指向引用賦值給變量s,這里的this是指向jQuery對象實例的。
4.var a = "data-property",聲明一個變量并賦值,關(guān)于它的更多內(nèi)容面會介紹。
5.var p = s.attr(a),其實data-property就是標(biāo)簽上的一個自定義屬性,那么這段代碼就是獲取此屬性值。
6.var isset = arguments.length > 0,判斷修改后的val()方法是否傳遞了參數(shù)。
7.var v = isset ? arguments[0] : null,如果傳遞參數(shù),那么久獲取第一個參數(shù),其他的忽略。
8.if (isset&&typeof(base)=="function") {
base.call(s, v);
},如果傳遞了參數(shù),且base參數(shù)是一個函數(shù),那么就調(diào)用base函數(shù)設(shè)置元素
- 原生js實現(xiàn)復(fù)制對象、擴(kuò)展對象 類似jquery中的extend()方法
- 淺談jQuery中的$.extend方法來擴(kuò)展JSON對象
- 基于jQuery的一個擴(kuò)展form序列化到j(luò)son對象
- 模仿JQuery.extend函數(shù)擴(kuò)展自己對象的js代碼
- 擴(kuò)展jQuery對象時如何擴(kuò)展成員變量具體怎么實現(xiàn)
- JQuery 動態(tài)擴(kuò)展對象之另類視角
- jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法示例詳解
- Jquery 的擴(kuò)展方法總結(jié)
- Jquery中擴(kuò)展方法extend使用技巧
- JavaScript自執(zhí)行函數(shù)和jQuery擴(kuò)展方法詳解
- JQuery擴(kuò)展對象方法操作示例
相關(guān)文章
JQuery.uploadify 上傳文件插件的使用詳解 for ASP.NET
今天下午整理文件上傳的例子,感覺收集到的例子都很不人性話,后來找到一個還可以的,本來想改成類似于騰訊QQ相冊那種方式,仔細(xì)看了一下是Flash的, 而且那個極速上傳插件也不知道用什么做的?問了一下,說是什么cgi. 搞得一頭霧水2010-01-01給jqGrid數(shù)據(jù)行添加修改和刪除操作鏈接(之一)
我這里用的不是jqGrid的自帶的編輯和刪除操作,我已經(jīng)把分頁導(dǎo)航欄下的編輯,刪除,搜索都取消掉了2011-11-11jquery.cookie.js實現(xiàn)用戶登錄保存密碼功能的方法
這篇文章主要介紹了jquery.cookie.js實現(xiàn)用戶登錄保存密碼功能的方法,結(jié)合實例形式詳細(xì)分析了jquery.cookie.js插件操作cookie實現(xiàn)保存用戶登錄信息的相關(guān)技巧,需要的朋友可以參考下2016-04-04jQuery實現(xiàn)統(tǒng)計復(fù)選框選中數(shù)量
這里給大家分享一段jQuery實現(xiàn)的統(tǒng)計復(fù)選框選中數(shù)量的代碼,非常的實用,有需要的小伙伴們請帶走!2014-11-11JQuery對ASP.NET MVC數(shù)據(jù)進(jìn)行更新刪除
這篇文章主要介紹了JQuery對ASP.NET MVC數(shù)據(jù)進(jìn)行更新刪除的相關(guān)資料,需要的朋友可以參考下2016-07-07