2012-04-12 63 views
1

我想知道之間的區別:他們的行爲不同,當我測試它們在firebug控制檯在jQuery.map「這個」關鍵字()

$('a').map(function(){return this}) 
$.map($('a'), function(){return this}) 

+0

他們是如何表現不同? – Brandan 2012-04-12 10:49:55

回答

4

剛剛經過簡短測試,它們的表現有所不同。後者中的'this'引用窗口對象。然而確實有訪問當前元素通過對象/陣列中傳遞循環時:

$('a').map(function(){ 
    return this 
}); 
$.map($('a'), function(el){ 
    return el; 
}); 

後者通常用於非jQuery對象和陣列,而前者是用於此目的。

查看文檔的詳細信息:

http://api.jquery.com/map/

http://api.jquery.com/jQuery.map/

2

沒有區別,我認爲這

$('a').map(function(){return this}) 

其實周圍

$.map($('a'), function(){return this}) 

的包裝,這是jQuery的源代碼

map: function(callback) { 
    return this.pushStack(jQuery.map(this, function(elem, i) { 
     return callback.call(elem, i, elem); 
    })); 
}, 

編輯 - 當然(我認爲這是理所當然的)this是指當你調用時的元素在集合上,而當您迭代集合時引用窗口對象$.map()