这可以以更简洁的方式完成吗?
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]
已经是一个 jQuery 对象,调用jQuery(src[i])
不会做任何事情。
不,它是一个普通的 DOM 节点,根本没有任何 jQuery 包装。
只是出于好奇,为什么要这样做?
因为之后我需要对每个元素单独做很多处理。例如,我需要遍历所有这些以找到最高的,然后将其余的设置为相同的高度。之后,我需要获取它们的所有宽度并在此基础上执行一些布局(因此每个元素都根据其他元素的宽度获取其 x 和 y 坐标)。等等。
如果我可以使用 jQuery 提供的速记函数,所有这些操作都会更容易完成,但这意味着我需要单独包装每个元素($('div')
只返回一个包装器)。而且由于我需要多次访问每个元素,我想通过只包装每个元素来提高性能,而不是每次访问。