擴(kuò)展jQuery對(duì)象時(shí)如何擴(kuò)展成員變量具體怎么實(shí)現(xiàn)
更新時(shí)間:2014年04月25日 15:29:59 作者:
這篇文章主要介紹了擴(kuò)展jQuery對(duì)象時(shí)如何擴(kuò)展成員變量,需要的朋友可以參考下
先看一段代碼:
jQuery.fn.extend(
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { this.myOwnMember = v; return this.myOwnMember; }
}
);
$("body").myOwnMember; //3
$("body").getMyOwnMember(); //3
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //3
這段代碼給jQuery對(duì)象擴(kuò)展了一個(gè)成員myOwnMember,兩個(gè)函數(shù)getMyOwnMember,setMyOwnMember分別用于返回和設(shè)置myOwnMember的值。但是我們看到setMyOwnMember并沒有起作用,我們?cè)俅蝕etMyOwnMember時(shí),返回的還是初始的值。這是為什么呢?原因在于$("body")每次都會(huì)創(chuàng)建一個(gè)新對(duì)象,所以每次$("body")里面的myOwnMember都是初始值。如果我們將代碼改成:
jQuery.fn.extend(
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { this.myOwnMember = v; return this.myOwnMember; }
}
);
var body = $("body");
body.myOwnMember; //3
body.getMyOwnMember(); //3
body.setMyOwnMember(4); //4
body.getMyOwnMember(); //4
這就是我們想要的效果了,這是因?yàn)?("body")只創(chuàng)建了一次,后面都是通過body變量進(jìn)行的引用。但是這種方法在實(shí)際使用過程中還是存在問題,因?yàn)槲也豢赡茉谌址秶鷥?nèi)都能夠引用到body變量,很多時(shí)候還是通過$("body")來獲取dom節(jié)點(diǎn),這樣的話我們又怎么保存一個(gè)jQuery對(duì)象擴(kuò)展變量的值呢?解決方法是我們不要把變量保存在jQuery對(duì)象上,而是保存在dom節(jié)點(diǎn)上,無論在一個(gè)dom節(jié)點(diǎn)上創(chuàng)建多少個(gè)jQuery對(duì)象,都是指向同一個(gè)dom節(jié)點(diǎn)的。所以我們將代碼改成如下:
jQuery.fn.extend(
{
getMyOwnMember: function () { return this[0].myOwnMember; },
setMyOwnMember: function (v) { this[0].myOwnMember = v; return this[0].myOwnMember; }
}
);
$("body").getMyOwnMember(); //undefined
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //4
復(fù)制代碼 代碼如下:
jQuery.fn.extend(
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { this.myOwnMember = v; return this.myOwnMember; }
}
);
$("body").myOwnMember; //3
$("body").getMyOwnMember(); //3
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //3
這段代碼給jQuery對(duì)象擴(kuò)展了一個(gè)成員myOwnMember,兩個(gè)函數(shù)getMyOwnMember,setMyOwnMember分別用于返回和設(shè)置myOwnMember的值。但是我們看到setMyOwnMember并沒有起作用,我們?cè)俅蝕etMyOwnMember時(shí),返回的還是初始的值。這是為什么呢?原因在于$("body")每次都會(huì)創(chuàng)建一個(gè)新對(duì)象,所以每次$("body")里面的myOwnMember都是初始值。如果我們將代碼改成:
復(fù)制代碼 代碼如下:
jQuery.fn.extend(
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { this.myOwnMember = v; return this.myOwnMember; }
}
);
var body = $("body");
body.myOwnMember; //3
body.getMyOwnMember(); //3
body.setMyOwnMember(4); //4
body.getMyOwnMember(); //4
這就是我們想要的效果了,這是因?yàn)?("body")只創(chuàng)建了一次,后面都是通過body變量進(jìn)行的引用。但是這種方法在實(shí)際使用過程中還是存在問題,因?yàn)槲也豢赡茉谌址秶鷥?nèi)都能夠引用到body變量,很多時(shí)候還是通過$("body")來獲取dom節(jié)點(diǎn),這樣的話我們又怎么保存一個(gè)jQuery對(duì)象擴(kuò)展變量的值呢?解決方法是我們不要把變量保存在jQuery對(duì)象上,而是保存在dom節(jié)點(diǎn)上,無論在一個(gè)dom節(jié)點(diǎn)上創(chuàng)建多少個(gè)jQuery對(duì)象,都是指向同一個(gè)dom節(jié)點(diǎn)的。所以我們將代碼改成如下:
復(fù)制代碼 代碼如下:
jQuery.fn.extend(
{
getMyOwnMember: function () { return this[0].myOwnMember; },
setMyOwnMember: function (v) { this[0].myOwnMember = v; return this[0].myOwnMember; }
}
);
$("body").getMyOwnMember(); //undefined
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //4
您可能感興趣的文章:
- 原生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代碼
- JQuery 動(dòng)態(tài)擴(kuò)展對(duì)象之另類視角
- jQuery.extend()、jQuery.fn.extend()擴(kuò)展方法示例詳解
- Jquery 的擴(kuò)展方法總結(jié)
- Jquery中擴(kuò)展方法extend使用技巧
- 修改或擴(kuò)展jQuery原生方法的代碼實(shí)例
- JavaScript自執(zhí)行函數(shù)和jQuery擴(kuò)展方法詳解
- JQuery擴(kuò)展對(duì)象方法操作示例
相關(guān)文章
基于jQuery實(shí)現(xiàn)多標(biāo)簽頁切換的效果(web前端開發(fā))
這篇文章主要介紹了基于jQuery實(shí)現(xiàn)多標(biāo)簽頁切換的效果(web前端開發(fā))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07Boostrap實(shí)現(xiàn)的登錄界面實(shí)例代碼
Bootstrap它是一個(gè)開源的web開發(fā)前端框架。本界面使用的Bootstrap是v3.3.5版本。這篇文章給大家?guī)砹嗽敿?xì)的實(shí)現(xiàn)代碼,非常不錯(cuò),感興趣的朋友一起看看吧2016-10-10基于jQuery的JavaScript模版引擎JsRender使用指南
這篇文章主要介紹了基于jQuery的JavaScript模版引擎JsRender使用指南,需要的朋友可以參考下2014-12-12jQuery遍歷頁面所有CheckBox查看是否被選中的方法
這篇文章主要介紹了jQuery遍歷頁面所有CheckBox查看是否被選中的方法,涉及jQuery鏈?zhǔn)讲僮骷搬槍?duì)CheckBox的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04為jQuery-easyui的tab組件添加右鍵菜單功能的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄獮閖Query-easyui的tab組件添加右鍵菜單功能的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10jQuery實(shí)現(xiàn)移動(dòng)端圖片上傳預(yù)覽組件的方法分析
這篇文章主要介紹了jQuery實(shí)現(xiàn)移動(dòng)端圖片上傳預(yù)覽組件的方法,結(jié)合實(shí)例形式分析了jQuery移動(dòng)端圖片上傳預(yù)覽組件的實(shí)現(xiàn)原理、核心代碼與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05