国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

擴展jQuery對象時如何擴展成員變量具體怎么實現

2019-11-20 20:47:01
字體:
來源:轉載
供稿:網友
先看一段代碼:
復制代碼 代碼如下:

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,兩個函數getMyOwnMember,setMyOwnMember分別用于返回和設置myOwnMember的值。但是我們看到setMyOwnMember并沒有起作用,我們再次getMyOwnMember時,返回的還是初始的值。這是為什么呢?原因在于$("body")每次都會創建一個新對象,所以每次$("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")只創建了一次,后面都是通過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 = v; return this[0].myOwnMember; }
}
);

$("body").getMyOwnMember(); //undefined
$("body").setMyOwnMember(4); //4
$("body").getMyOwnMember(); //4
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 游戏| 景谷| 祁门县| 黑水县| 永州市| 营口市| 沙坪坝区| 辛集市| 长乐市| 于都县| 临澧县| 长沙县| 法库县| 乌兰浩特市| 镇雄县| 平塘县| 望江县| 比如县| 安溪县| 德昌县| 柏乡县| 武汉市| 葵青区| 密山市| 资溪县| 图们市| 景洪市| 齐河县| 武鸣县| 昌乐县| 偏关县| 大化| 策勒县| 章丘市| 嘉黎县| 新巴尔虎左旗| 鲁山县| 察哈| 阳城县| 孙吴县| 诸暨市|