如果它匹配.class,我怎样才能获得jQuery $('。class',context)来包含上下文本身?

时间:2010-03-18 20:55:44

标签: jquery jquery-selectors

我希望能够匹配给定上下文中的所有元素,包括上下文元素本身。
这是我目前使用的代码,但似乎效率低下。还有更好的方法吗?
注意:我正在使用jQ 1.3.2,但我很快就会升级,所以我也对1.4解决方案感兴趣。

var context = $('#id');   
var filters = '.class1, .class2';

// take context itself if it matches filters
$(context).filter(filters)
// add anything matching filters inside context
.add($(filters, context))

注意:.add($(f,c))在jQ 1.3中作为.add(f,c)在jQ 1.4

中工作

2 个答案:

答案 0 :(得分:3)

你可以这样做:

$(context).find('*').andSelf().filter(filters)

.andSelf()将前一个元素附加到堆栈上,在本例中为上下文。但是......我不确定这是否比你目前的方法更好,过滤它有点慢。我认为你只是遇到了一个看起来不漂亮的情况,如果.andSelf()采用选择器会很好,那么你可以做到:

$(context).find(filters).andSelf(filters)

但仍然没有很大的进步。

答案 1 :(得分:2)

看起来@Nick Craver的想法被推向了生产阶段。 jQuery的addBack()函数已替换andSelf(),它接受​​选择器。

$(context).find(filters).addBack(filters)