有没有快速的方法将jQuery包装在数组中的每个元素周围?

前端之家收集整理的这篇文章主要介绍了有没有快速的方法将jQuery包装在数组中的每个元素周围?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这可以用更简洁的方式完成吗?
var src = $('div');
var dest = [];

for ( var i = 0; i < src.length; i++)
    dest[i] = $(src[i]);

我只能想到这一点,这仍然非常冗长:

var dest = [];
$('div').each(function() { dest.push($(this)); });

jQuery是否为这种情况提供了更好的东西?我找不到它.

解决评论中的一些反复出现的问题:

src[i] is already a jQuery object,calling jQuery(src[i]) doesn’t do anything.

不,它是一个普通的DOM节点,根本没有任何jQuery包装.

Just out of curiosity,why do it at all?

因为之后我需要分别对每个元素做很多事情.例如,我需要遍历所有这些以找到最高的那个,然后将其余部分设置为相同的高度.之后,我需要获得所有宽度并基于此进行一些布局(因此每个元素根据其他元素的宽度获得其x& y坐标).等等.

如果我可以使用jQuery提供的速记函数,所有这些操作都更容易完成,但这意味着我需要单独包装每个元素($(‘div’)只返回所有这些元素的包装).因为我需要多次访问每个元素,所以我想通过将每个元素包装一次而不是每次访问来提高性能.

解决方法

这正是map()的用途.
您循环遍历每个元素并将一个函数应用于该元素并将其推送到一个新的数组.
var wrapped  = $.map($('div'),function(){ return $(this); });

或者为了可读性

var wrapped  = $.map($('div'),function(val,i) {
    return $(val);
});

猜你在找的jQuery相关文章