簡潔的API
$.on
$.css
$.ajax
….
優(yōu)雅的鏈?zhǔn)?/strong>
var xhr = $.ajax( "./example.php" )
.done(function() { alert("success"); })
.fail(function() { alert("error"); })
類CSS的選擇器
$("div, span, p.myClass" )
$("div span:first-child")
...
便捷的操作
$("p").removeClass("myClass noClass").addClass("yourClass");
$("ul li:last").addClass(function(index) {
return "item-" + index;
});
$('.container').append($('h2'));
…
2、立即調(diào)用表達(dá)式
任何庫或者框架設(shè)計(jì)的第一個(gè)需要考慮的點(diǎn)就是解決命名空間和全局變量污染的問題,jQuery利用了JavaScript函數(shù)作用域的特性,采用立即執(zhí)行函數(shù)包裹了自身的方法來解決這個(gè)問題。
jQuery的立即調(diào)用函數(shù)表達(dá)式的寫法吧
one
(function(window, factory) {
factory(window)
}(this, function() {
return function() {
//jQuery的調(diào)用
}
}))
簡化它就好了。這里我們可以開始剖解它
//相信這樣大家很容易理解,對啊就是一個(gè)簡單的匿名函數(shù)執(zhí)行函數(shù)的兩種寫法
(function() {
/*code*/
})()
or
(function() {
/*code*/
}())
下面我們再看一個(gè)傳參的立即執(zhí)行函數(shù)
(function(a,b) {
/*code*/
}(c,d))
我們知道在javascript中函數(shù)作為一等公民,我們可以將一個(gè)函數(shù)作為參數(shù)傳入另一個(gè)函數(shù)中
//這里的factory是一個(gè)形參函數(shù)
(function(window, factory) {
factory(window)
}(this, function() {
return function() {
//jQuery的調(diào)用
}
}))
//整個(gè)這樣一段就是給上面的匿名函數(shù)傳入第一個(gè)實(shí)參this,第二個(gè)實(shí)參一個(gè)function,并立即執(zhí)行
(this, function() {
return function() {
//jQuery的調(diào)用
}
})