javascript - 创建 jQuery 集合的更好方法

标签 javascript jquery plugins

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

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/

关于javascript - 创建 jQuery 集合的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8172501/

相关文章:

java - 使用 C++ 中的库为 PhoneGap 创建插件

javascript - 动画在 keyup 事件后重复

javascript - 首次运行后链接不会切换

javascript - JQuery:使隐藏的跨度可见并闪烁

jquery - 在 iPad 视口(viewport)中保留 jQuery 模式

macos - macOS pluginkit 输出中的前缀是什么意思?

select - 如何在Grails中自定义选择标签

javascript - 在 Javascript 中将数组转换为嵌套 JSON?

javascript - 为什么我的音节被取回,但我的单词却没有被取回?

javascript - 优化js - 保存对象中复选框的值