2010-03-18 16 views
4

我希望能夠匹配給定上下文中的所有元素,包括上下文元素本身。
這是我目前使用的代碼,但它似乎效率低下。有沒有更好的辦法?
注意:我使用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

回答

3

你可以這樣做:

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

.andSelf()追加一個元素在堆棧上,在這種情況下的上下文。但是......我不確定這是否比現在的方法更好,過濾速度會慢一些。我想你正好碰到一種情況,並不十分好看,將是很好,如果.andSelf()了一個選擇,那麼你可以做:

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

還沒雖然一個巨大的進步。

2

看起來像@Nick Craver的想法被推向了生產。 jQuery的addBack()函數已取代andSelf()並且它接受一個選擇器。

$(context).find(filters).addBack(filters) 
相關問題