-
在jQuery的官方文檔中,提示用戶這jQuery.data()是一個(gè)低級的方法,應(yīng)該用.data()方法來代替。$.data( element, key, value )可以對DOM元素附加任何類型的數(shù)據(jù),但應(yīng)避免循環(huán)引用而導(dǎo)致的內(nèi)存泄漏問題。
這里有疑問:
$().data()是直接關(guān)聯(lián)到dom上的,為什么說比$.data更好呢?
查看全部 -
第一組,通過$().data()的方式,只取到最后一個(gè)a值,之前的被覆蓋
2222
2222
第二組,通過$.data的方式,取到2組b值,未覆蓋
1111
2222
查看全部 -
.eq()??減少匹配元素的集合,根據(jù)index索引值,精確指定索引對象。 .get()?通過檢索匹配jQuery對象得到對應(yīng)的DOM元素。
.slice(?start?[,?end?]?)
作用:
根據(jù)指定的下標(biāo)范圍,過濾匹配的元素集合,并生成一個(gè)新的 jQuery 對象。
this.pushStack
查看全部 -
[].slice.call({ 'a': 'a', 'b': 'b', length: 2 })
(2) [empty × 2]
[].slice.call({ 1: 'a', 2: 'b', length: 2 })
(2) [empty, "a"]
[].slice.call({ 0: 'a', 1: 'b', length: 2 })
(2) ["a", "b"]
將類似數(shù)組的對象轉(zhuǎn)為真正的數(shù)組
查看全部 -
var a = [1,2,{a:12}];
var b = [{a:12},4];
var arr = $.merge( a, b );
0:?1
1:?2
2:?{a:?12}
3:?{a:?12}
4:?4
參數(shù)只能是數(shù)組,合并不會(huì)覆蓋
查看全部 -
$("#cnblogs_post_body").find(".cnblogs_code").find("img").end()表示:
$("#cnblogs_post_body").find(".cnblogs_code")
$("#cnblogs_post_body").find(".cnblogs_code").find("img").addBack()表示:
$("#cnblogs_post_body").find(".cnblogs_code").find("img") +?$("#cnblogs_post_body").find(".cnblogs_code")
查看全部 -
這里有一個(gè)設(shè)計(jì)的重點(diǎn),通過調(diào)用的上下文,我們來確定這個(gè)方法是作為靜態(tài)還是實(shí)例處理,在javascript的世界中一共有四種上下文調(diào)用方式:方法調(diào)用模式、函數(shù)調(diào)用模式、構(gòu)造器調(diào)用模式、apply調(diào)用模式:
??????jQuery.extend調(diào)用的時(shí)候上下文指向的是jQuery構(gòu)造器??????jQuery.fn.extend調(diào)用的時(shí)候上下文指向的是jQuery構(gòu)造器的實(shí)例對象了
??????? 通過extend()函數(shù)可以方便快速的擴(kuò)展功能,不會(huì)破壞jQuery的原型結(jié)構(gòu),jQuery.extend = jQuery.fn.extend = function(){...}; 這個(gè)是連等,也就是2個(gè)指向同一個(gè)函數(shù),怎么會(huì)實(shí)現(xiàn)不同的功能呢?這就是this力量了!
??????? fn與jQuery其實(shí)是2個(gè)不同的對象,在之前有講解:jQuery.extend 調(diào)用的時(shí)候,this是指向jQuery對象的(jQuery是函數(shù),也是對象!),所以這里擴(kuò)展在jQuery上。而jQuery.fn.extend 調(diào)用的時(shí)候,this指向fn對象,jQuery.fn 和jQuery.prototype指向同一對象,擴(kuò)展fn就是擴(kuò)展jQuery.prototype原型對象。這里增加的是原型方法,也就是對象方法了。所以jQuery的API中提供了以上2個(gè)擴(kuò)展函數(shù)。
查看全部 -
var aQuery = function(selector) {
? ? //強(qiáng)制為對象
if (!(this instanceof aQuery)) {
return new aQuery(selector);
}
var elem = document.getElementById(/[^#].*/.exec(selector)[0]);
this.length = 1;
this[0] = elem;
this.context = document;
this.selector = selector;
this.get = function(num) {
return this[num];
}
return this;
}
查看全部 -
(function(window,?undefined)?{ ????var?jQuery?=?function()?{} ????//?... ????window.jQuery?=?window.$?=?jQuery; })(window);
從上面的代碼可看出,自動(dòng)初始化這個(gè)函數(shù),讓其只構(gòu)建一次。詳細(xì)說一下這種寫法的優(yōu)勢:
??1、window和undefined都是為了減少變量查找所經(jīng)過的scope作用域。當(dāng)window通過傳遞給閉包內(nèi)部之后,在閉包內(nèi)部使用它的時(shí)候,可以把它當(dāng)成一個(gè)局部變量,顯然比原先在window scope下查找的時(shí)候要快一些。
??2、undefined也是同樣的道理,其實(shí)這個(gè)undefined并不是JavaScript數(shù)據(jù)類型的undefined,而是一個(gè)普普通通的變量名。只是因?yàn)闆]給它傳遞值,它的值就是undefined,undefined并不是JavaScript的保留字。為什么要傳遞undefined?
Javascript?中的?undefined?并不是作為關(guān)鍵字,因此可以允許用戶對其賦值。
總結(jié):全局變量是魔鬼,?匿名函數(shù)可以有效的保證在頁面上寫入JavaScript,而不會(huì)造成全局變量的污染,通過小括號,讓其加載的時(shí)候立即初始化,這樣就形成了一個(gè)單例模式的效果從而只會(huì)執(zhí)行一次。
查看全部 -
重要查看全部
-
?查看全部
-
爸比查看全部
-
.end()回溯
查看全部 -
this?
查看全部 -
JQuery的立即調(diào)用表達(dá)式有三種查看全部
舉報(bào)