2012-03-27 49 views
1

jQuery的constructor可以接受一組元素。jQuery(elementArray) - 僅選擇數組項的子項

jQuery(elementArray) 

我誤解了elementArray參數的用法,還是這是一個jQuery的bug?

大概,應用的任何選擇器都將應用於全部 HTMLElements是數組中的項目或項目的子項。但是,它似乎只選擇子項

例如,在具有以下內容的數組中,它不會與具有類topLevelDiv或topLevelSpan的元素相匹配。

elementArray[0] contains 
    <div class="topLevelDiv"> 
     <span class="childSpan"></span><div class="childDiv"></div> 
    </div> 
elementArray[1] contains 
    <span class="topLevelSpan"> 
     <span class="childSpan"></span> 
    </span> 

這是真實的elementArray是否被用作背景或作爲一個對象來包裝,並調用find()方法

$('div', elementArray) 
// OR 
$(elementArray).find('div') 

這裏是一個演示: http://jsfiddle.net/A49VV/1/

+0

http://jsfiddle.net/A49VV/1/:js不知道它意味着什麼。 – Blazemonger 2012-03-27 21:57:54

+0

@ mblase75:大聲笑在想着同樣的事情:) – mellamokb 2012-03-27 21:59:57

+0

這看起來確實是一種可以通過**閱讀文檔**得到解答的問題。 – 2012-03-27 22:00:02

回答

1

jQuery是工作作爲預計,當你做find或提供上下文的第二個參數,你正在尋找指定爲你想要的內容。如果你想通過你的elementArray中的頂級節點進行過濾,你需要使用filter函數。

+0

從我在過濾器上讀取的內容中,它接受一個jQuery對象,而不是一個普通的數組,例如[htmlElement,htmlElement ...]。 – 2012-03-27 22:08:42

+1

'$(elementArray)'*是一個jQuery對象。如果你調用'$(elementArray).filter('div')'而不是'$(elementArray).find('div')',你會發現它按預期工作。 – mellamokb 2012-03-27 22:10:36

0

jQuery(elementArray)創建一個jQuery對象,其中包含數組中的所有元素。您應用於該jQuery對象的任何操作都將應用於數組中的所有元素。

所以,如果你這樣做:

jQuery(elementArray).css("color", "red"); 

它會變成紅色文字在所有這些元素。 jQuery操作將應用於這些特定元素。它不會直接應用於這些元素的任何孩子。它是否影響孩子取決於操作是什麼。這是jQuery的設計。

當您說「應用了任何選擇器」時,您的意思並不清楚,因爲當您執行jQuery(elementArray)時沒有選擇器參與。

您可以過濾jQuery(elementArray)jQuery(elementArray).filter(selector),然後將數組中與選擇器不匹配的元素從jQuery對象中移除。

或者,您可以使用.find(),如jQuery(elementArray).find(selector)。這將查看elementArray中每個匹配選擇器的子元素的後代,並且它將把它找到的所有後代放入返回的新jQuery對象中。

+0

謝謝。過濾並找到與匹配組相對的產品。 '$(elementArray).find('div')'產生'[div.childDiv]','$(elementArray).filter('div')'產生'[div.topLevelDiv]'。我正在尋找更類似於XPath PathExpr'/'的選項,它選擇'在任何級別',這將結合這兩套。 – 2012-03-27 23:29:46

+0

@Monte,我從來不清楚你正在做什麼(現在還不是),這就是爲什麼我描述了幾個不同的選擇,希望能夠與你正在嘗試做的事情相交織。如果你想要兩個不同選擇的聯合,你可以使用'.add()'方法將新元素添加到現有的jQuery對象中,或者組合兩個jQuery對象或將新選擇器操作的結果添加到現有的jQuery對象中。 – jfriend00 2012-03-27 23:41:17