jQuery是否有更优内置方法将选择器结果转为jQuery对象数组?
jQuery生成单元素jQuery对象数组的优化方案
更简洁的内置实现方式
你可以直接用jQuery自带的.map()结合.get()一步生成目标数组,比你当前的写法更精简:
const arr = $(selector).map(function() { return $(this); }).get();
用箭头函数简化的版本:
const arr = $(selector).map(() => $(this)).get();
原理说明
- jQuery的
.map()会遍历匹配到的元素集合,返回一个包装了结果的jQuery对象; - 调用
.get()可以把这个jQuery对象转换成普通JavaScript数组,最终得到的就是每个元素单独被jQuery包装后的数组。
额外优化:无需转数组直接遍历
从jQuery 3.0开始,jQuery对象本身已经支持可迭代,你完全可以直接用for..of遍历原集合,省去转数组的步骤:
for (let el of $(selector)) { $(el).toggle(false); }
如果确实需要生成单个元素的jQuery对象数组,.map()+.get()就是最简洁的内置方法,比你原来的$.makeArray()+数组map少一次数组转换,效率更高。
内容的提问来源于stack exchange,提问作者kofifus
相关产品推荐
相关产品推荐

