2013-10-14 45 views
3

說我由一個DOM片段:如何結合jQuery find()和filter()的結果?

var dom = $(" 
    <div id='root' class='abc'> 
     <div id='child1' class='xxx'>no-match</div> 
     <div id='child2' class='abc'>match!</div> 
     <div id='child3' class='xxx'>no-match</div> 
    </div> 
"); 

,我想檢索與 '名爲.abc'(即#root和#的child2)

dom.find所有元素會( 'ABC'。)返回所有匹配的子元素(即只#的child2)
dom.filter將返回所有匹配的根元素(即只是#root。)

如何,我不是( 'ABC'):
- 做一個呼叫發現#root和#child2,或者
- 結合的「混合」結果,如發現的))的結果(和過濾器(

我見過的其他職位: How to combine two jQuery results 但是這並不是真正的「結合」,而是「到預先附加更多結果 - 現有結果」

我真正想要做的是一個類似於$.extend()

var one = dom.find('.abc'); 
var two = dom.filter('.abc'); 
var three = combine(one, two); 
// or one.somefcn(two); // One is augmented 
// or three = one.somefcn(two); // 

任何信息/想法,將不勝感激

+5

我不明白爲什麼['。新增()'](http://api.jquery.com/add)不能滿足您的需求。 – Blazemonger

+0

我想我錯過了一些東西 - 你能簡化你的預期輸出和輸入什麼 – SmokeyPHP

回答

4

您可以使用add()來選擇相結合:

var $all = dom.find('.abc').add(dom.filter('.abc')); 
1

使用.add()來選擇相結合。

將元素添加到匹配元素集合中。

var added = dom.find('.abc').add(dom.filter('.abc'));