擴展jQuery對象時如何擴展成員變量具體怎么實現(xiàn)
更新時間:2014年04月25日 15:29:59 作者:
這篇文章主要介紹了擴展jQuery對象時如何擴展成員變量,需要的朋友可以參考下
先看一段代碼:
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對象擴展了一個成員myOwnMember,兩個函數(shù)getMyOwnMember,setMyOwnMember分別用于返回和設(shè)置myOwnMember的值。但是我們看到setMyOwnMember并沒有起作用,我們再次getMyOwnMember時,返回的還是初始的值。這是為什么呢?原因在于$("body")每次都會創(chuàng)建一個新對象,所以每次$("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
這就是我們想要的效果了,這是因為$("body")只創(chuàng)建了一次,后面都是通過body變量進行的引用。但是這種方法在實際使用過程中還是存在問題,因為我不可能在全局范圍內(nèi)都能夠引用到body變量,很多時候還是通過$("body")來獲取dom節(jié)點,這樣的話我們又怎么保存一個jQuery對象擴展變量的值呢?解決方法是我們不要把變量保存在jQuery對象上,而是保存在dom節(jié)點上,無論在一個dom節(jié)點上創(chuàng)建多少個jQuery對象,都是指向同一個dom節(jié)點的。所以我們將代碼改成如下:
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
復制代碼 代碼如下:
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對象擴展了一個成員myOwnMember,兩個函數(shù)getMyOwnMember,setMyOwnMember分別用于返回和設(shè)置myOwnMember的值。但是我們看到setMyOwnMember并沒有起作用,我們再次getMyOwnMember時,返回的還是初始的值。這是為什么呢?原因在于$("body")每次都會創(chuàng)建一個新對象,所以每次$("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
這就是我們想要的效果了,這是因為$("body")只創(chuàng)建了一次,后面都是通過body變量進行的引用。但是這種方法在實際使用過程中還是存在問題,因為我不可能在全局范圍內(nèi)都能夠引用到body變量,很多時候還是通過$("body")來獲取dom節(jié)點,這樣的話我們又怎么保存一個jQuery對象擴展變量的值呢?解決方法是我們不要把變量保存在jQuery對象上,而是保存在dom節(jié)點上,無論在一個dom節(jié)點上創(chuàng)建多少個jQuery對象,都是指向同一個dom節(jié)點的。所以我們將代碼改成如下:
復制代碼 代碼如下:
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實現(xiàn)復制對象、擴展對象 類似jquery中的extend()方法
- 淺談jQuery中的$.extend方法來擴展JSON對象
- 基于jQuery的一個擴展form序列化到j(luò)son對象
- 模仿JQuery.extend函數(shù)擴展自己對象的js代碼
- JQuery 動態(tài)擴展對象之另類視角
- jQuery.extend()、jQuery.fn.extend()擴展方法示例詳解
- Jquery 的擴展方法總結(jié)
- Jquery中擴展方法extend使用技巧
- 修改或擴展jQuery原生方法的代碼實例
- JavaScript自執(zhí)行函數(shù)和jQuery擴展方法詳解
- JQuery擴展對象方法操作示例
相關(guān)文章
基于jQuery實現(xiàn)多標簽頁切換的效果(web前端開發(fā))
這篇文章主要介紹了基于jQuery實現(xiàn)多標簽頁切換的效果(web前端開發(fā))的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07基于jQuery的JavaScript模版引擎JsRender使用指南
這篇文章主要介紹了基于jQuery的JavaScript模版引擎JsRender使用指南,需要的朋友可以參考下2014-12-12jQuery遍歷頁面所有CheckBox查看是否被選中的方法
這篇文章主要介紹了jQuery遍歷頁面所有CheckBox查看是否被選中的方法,涉及jQuery鏈式操作及針對CheckBox的操作技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04為jQuery-easyui的tab組件添加右鍵菜單功能的簡單實例
下面小編就為大家?guī)硪黄獮閖Query-easyui的tab組件添加右鍵菜單功能的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10jQuery實現(xiàn)移動端圖片上傳預覽組件的方法分析
這篇文章主要介紹了jQuery實現(xiàn)移動端圖片上傳預覽組件的方法,結(jié)合實例形式分析了jQuery移動端圖片上傳預覽組件的實現(xiàn)原理、核心代碼與相關(guān)注意事項,需要的朋友可以參考下2020-05-05