jQuery每个单一的替代品

时间:2013-05-23 19:43:24

标签: jquery

我经常看到jQuery代码类似于某种形式的.each(),它有一个ID选择器:

$('#selector').each(function(index, element){
    // do something
});

现在,了解只有一个具有该ID的元素,但我想维护jQuery对象的链能力,除了.each()之外还有其他一些选项。 在没有.each()这里的开销的情况下有什么方法吗?

(我知道它的挑剔,因为每个内部for的开销并不大)

像这个例子假的“justme”:

$('#selector').justme(function(myElement){
    alert(myElement.id);
    // do something
}).parent('div')...

我知道有例如:

$('#selector').eq(0)
$('#selector')[0]

但是这些缺乏功能或打破了jQuery链。

2 个答案:

答案 0 :(得分:4)

老实说,我不知道你在谈论“每个开销”。 each的实施方式如下:

each: function(fct) {
    for (var i = 0; i < this.elements.length; i++) {
       fct.apply(this.elements[i]);
    }
    return this;
}

没有开销!它利用JS的本机属性,即关闭重新范围。对于一个元素,您在一个赋值,一个算术比较和一个增量中失去了性能,所有三个都是原子操作。这是一个微不足道的开销。

答案 1 :(得分:3)

我不担心额外的开销(或缺乏开销),但如果你真的想要这样的插件,那么写起来很容易。

$.fn.justme = function(callback){
    callback.apply(this[0]);
    return this;
};