繁体   English   中英

创建jQuery集合的更好方法

[英]Better way to create a jQuery collection

我写了一个这样的插件来获取集合的一个子集:

jQuery.range = function(start, end, includingTheLast) {
    var ret = $([]), i = 0;

    while (!this.eq(i).is(start) && i < this.length)
        i++;

    for (; i < this.length && !this.eq(i).is(end); i++) {
        ret = ret.add(this[i]); // we can do better than this
    }
    if (includingTheLast) ret = ret.add(this[i]); // we can do better than this
    return this.pushStack(ret, 'range');
}

它的用法如下:

$('a').range(':eq(2)', '#stop')...

ret = ret.add(this[i])似乎很慢,这是一种明智的方法吗? 我应该建立一个数组然后将其转换为jQuery对象吗? 这是微优化吗?

jQuery构造函数还接受DOM元素数组,并将它们包装在jQuery对象中。 因此,如果您反对使用.add,则可以将它们全部推送到一个数组(作为dom元素),然后立即包装整个内容。

我还没有进行性能测试,看看会更快。

参考: http : //api.jquery.com/jQuery/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM