1、jquery把所有源碼都放在一個(gè)匿名函數(shù)自執(zhí)行里面,這樣所有的變量和函數(shù)就都是局部的,他們就不會(huì)跟其他的代碼產(chǎn)生沖突,互相不影響。
因?yàn)槎际蔷植康?,所以就要?duì)外提供接口,這樣在外面才能調(diào)用到他們。
//$() jQuery()
window.$ = $
把對(duì)外提供的接口掛載到window底下,這樣的話就可以調(diào)用到了。
(function(){
(21 , 94) 定義了一些變量和函數(shù) jQuery = function(){}
(96, 283) 給jQuery對(duì)象,添加一些方法和屬性
(285 , 347) extend : jQuery的繼承方法
(349 , 817) jQuery.extend():擴(kuò)展一些工具方法(靜態(tài)方法)
(877 , 2856) Sizzle:復(fù)雜選擇器的實(shí)現(xiàn)
(2880 , 3042) Callbacks:回調(diào)對(duì)象:對(duì)函數(shù)的統(tǒng)一管理
(3043 , 3183) Deferred:延遲對(duì)象:對(duì)異步的統(tǒng)一管理(定時(shí)器、AJAX、創(chuàng)建script標(biāo)簽、等待DOM加載等)
(3184 , 3295) support:功能檢測(cè)
(3308 , 3652) data():數(shù)據(jù)緩存(獲取、刪除、設(shè)置)
(3653 , 3797) queue():隊(duì)列管理
(3803 , 4299) attr() prop() val() addCalss() 等:對(duì)元素屬性的操作
(4300 , 5128) on() trigger():事件操作的相關(guān)方法
(5140 , 6057) DOM操作:添加 刪除 獲取 包裝 DOM篩選
(6058 , 6620) css():樣式的操作
(6621 , 7854) 提交的數(shù)據(jù)和ajax():ajax() load() getJson()
(7855 , 8584) animate():運(yùn)動(dòng)的方法
(8585 , 8792) offset():位置與尺寸的方法
(8804 , 8821) jQuery支持模塊化的模式
(8826) window.jQuery = window.$ = jQuery;
})();
jQuery就是一個(gè)基于面向?qū)ο蟮某绦?br>
$('#div1').css();
$('#div1').html();
var arr = new Array();
arr.push();
arr.sort();
$('ul li + p input.class').css();
function fn1(){ alert(1); }
function fn2(){ alert(2); }
var cb = $.Callbacks();
cb.add(fn1);
cb.add(fn2);
cb.fire(); //1,2
cb.remove(fn2);
cs.fire(); //1
setTimeout(function(){
alert(1);
},1000);
alert(2);
//2 1
var fdf = $.Deferred;
setTimeout(function(){
alert(1);
dfd.resolve();
},1000);
dfd.done(function(){
alert(2);
})
//1 2
checkbox\radio
"" on old webKit,'on' elsewhere;
support.checkOn = input.value!==""
$('#div1').data('name','hello');//數(shù)據(jù)緩存的掛載機(jī)制,防止元素的內(nèi)存泄漏
$('#div1').data('name');//hello
$('#div1').animate({left:100});
$('#div1').animate({top:100});
$('#div1').animate({width:100});
每個(gè)運(yùn)動(dòng)的時(shí)間不一樣,怎樣保證一個(gè)運(yùn)動(dòng)完了才進(jìn)行下一個(gè),這時(shí)候就用到隊(duì)列,把三個(gè)都入隊(duì),一個(gè)執(zhí)行結(jié)束之后再進(jìn)行下一個(gè)。
對(duì)函數(shù)的順序管理也能用隊(duì)列