1

我想知道两者之间的区别:

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

firebug当我在控制台中测试它们时,它们的行为会有所不同。

4

2 回答 2

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/

于 2012-04-12T11:02:55.687 回答
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()而当你迭代一个集合时它引用窗口对象$.map()

于 2012-04-12T10:34:09.417 回答