主jQuery方法采用第二个可选参数来为搜索提供上下文。 例如
$(".setA", ancestorOfSetsA);
但是,jQuery add()
方法不接受此上下文参数。我想要完成的是:
$(".setA", ancestorOfSetsA).add(".setB", ancestorOfSetsB);
我试图通过一个插件来重载add()
方法,但我无法弄清楚如何将两个jQuery对象组合成一个jQuery对象。
我想找到一种方法来使用jQuery做一个范围add()
,但如果失败了,如果我能找到一种合并到jQuery对象的方法,我会写一个。
答案 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 )
)));
}