有没有办法在jQuery中执行'scoped'add()?

时间:2008-12-09 19:39:36

标签: javascript jquery

主jQuery方法采用第二个可选参数来为搜索提供上下文。 例如

$(".setA", ancestorOfSetsA);

但是,jQuery add()方法不接受此上下文参数。我想要完成的是:

$(".setA", ancestorOfSetsA).add(".setB", ancestorOfSetsB);

我试图通过一个插件来重载add()方法,但我无法弄清楚如何将两个jQuery对象组合成一个jQuery对象。

我想找到一种方法来使用jQuery做一个范围add(),但如果失败了,如果我能找到一种合并到jQuery对象的方法,我会写一个。

1 个答案:

答案 0 :(得分:2)

您可以将jQuery集合和add一起传递给选择器字符串:

$(".setA", ancestorOfSetsA).add( $(".setB", ancestorOfSetsB) );

如果你想重载add,那么你需要小心支持它的所有行为。某人(您可能正在使用的插件)可能会这样做:

$( selector ).add('<div>new element</div>').appendTo( somethere );

<强>更新

这是jQuery修改的当前add函数,用于获取上下文参数:

jQuery.fn.add = function( selector, context ) {
    return this.pushStack( jQuery.unique( jQuery.merge(
        this.get(),
        typeof selector == 'string' ?
            jQuery( selector, context ) :
            jQuery.makeArray( selector )
    )));
}