首頁 > web前端 > js教程 > 主體

擴展jQuery物件時如何擴展成員變數具體怎麼實作_jquery

WBOY
發布: 2016-05-16 16:51:06
原創
1077 人瀏覽過

先看一段程式碼:

複製程式碼 程式碼如下:

jQuery.fn.extend(
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { this.myOwnM = v. >}
);

$("body").myOwnMember; //3
$("body").getMyOwnMember(); //3
$("body" ).setMyOwnMember(4); //4
$("body").getMyOwnMember(); //3

這段程式碼為jQuery物件擴充了一個成員myOwnMember,兩個函數getMyOwnMember,setMyOwnMember分別用於傳回和設定myOwnMember的值。但是我們看到setMyOwnMember並沒有起作用,我們再次getMyOwnMember時,回傳的還是初始的值。這是為什麼呢?原因在於$("body")每次都會建立新對象,所以每次$("body")裡面的myOwnMember都是初始值。如果我們將程式碼改成:

複製程式碼 程式碼如下:
jQuery.fnfn.extend (
{
myOwnMember: 3,
getMyOwnMember: function () { return this.myOwnMember; },
setMyOwnMember: function (v) { ember.myOwnMMember = return .
}
);

var body = $("body");
body.myOwnMember; //3
body.getMyOwnMember(); //3
body.setMyOwnMember(4); //4
body.getMyOwnMember(); //4

這就是我們想要的效果了,這是因為$("body")只創建了一次,後面都是透過body變數的引用。但這種方法在實際使用過程中還是有問題,因為我不可能在全域範圍內都能夠引用到body變量,很多時候還是透過$("body")來取得dom節點,這樣的話我們又怎麼保存一個jQuery物件擴充變數的值呢?解決方法是我們不要把變數保存在jQuery對像上,而是保存在dom節點上,無論在一個dom節點上創建多少個jQuery對象,都是指向同一個dom節點的。所以我們將程式碼改成如下:

複製程式碼 程式碼如下:
jQuery.fn. extend(
{
getMyOwnMember: function () { return this[0].myOwnMember; },
setMyOwnMember: function (v) { this[0].myOwnMember = vmy return this[0]. myOwnMember; }
}
);

$("body").getMyOwnMember(); //undefined
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //4

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板