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