2009-08-13 63 views
2

我有這行成功地選擇我的網頁上的類名爲「myclass」的所有要素:如何使用jQuery選擇數組中的項目?

var myTerms = $(".myTerm"); 

上面一行的作品,myTerms是所有myTerm的數組,每個包含「subTerms」。

然後當我迭代每個myTerm時,我想使用jQuery返回myTerm中的「subTerms」數組。

我想:

var myTerms = $(".myTerm"); 
for (var i = 0; i < myTerms.length; i++) { 
    var myTerm = queryTerms[i]; 
    subTerms = myTerm.$("subTerms"); 

但是,這是一個沒有去。 jQuery甚至爲此打算,還是回到普通的舊Java腳本更好。

編輯

subTerm是元素myTerm

+0

你到底想用「subTerms」做你獲取EM後? – gnarf 2009-08-13 21:57:35

+0

子條款實際上是專門下拉列表,所以我只想獲得它們的值。 – Matt 2009-08-13 21:59:18

+0

你能給我們一些HTML條款嗎?它很難做到這個東西盲目 – gnarf 2009-08-13 22:23:24

回答

6

上什麼subterms對象是有點困惑裏面的類名,但我給它一個鏡頭。

$('.myTerm').each(function(){ 
    subTerms = $(this).children(); 
}); 

**編輯**

如果你想選擇的選項,做

$('.myTerm').each(function(){ 
    subTerms = $(this).children('.subTerm option'); 
}); 
+1

。孩子()假設直系後代對嗎?也許.find()是你的意思? – gnarf 2009-08-13 22:28:36

1

幾件事情要指出。 $(".myTerm")不是一個數組 - 它是一個jQuery對象,您可以使用for循環,但each要好得多。 each()函數this的內部引用DOMElement。另外,如果你想尋找更多的對象中一個jQuery對象,你可以用$element.find('.subterm')$('.subTerm', element)

$(".myTerm").each(funciton() { 
    // look for any .subTerm that exist underneath of us 
    var subTerms = $(".subTerm", this); 

    // do something with subTerms as an example.... 
    var text = []; 
    subTerms.each(function() { 
    // .val() assuming its an option element 
    // .text() might be better. 
    text.push($(this).val()); 
    }); 

    alert(text.join(";")); 
}); 
1

可以範圍的第二個查詢電話,只是看發現長期

$(".myTerms").each(function() { 
    var sub = $(".subTerms", this); 
}); 
+0

我的答案在你的3分鐘前的精簡版。 ;) – gnarf 2009-08-13 22:27:54

+0

我是一個緩慢的typer,我能說什麼:) – Jaime 2009-08-13 22:29:53

2

我下我不確定你在問什麼。聽起來你想要匹配所有在你的列表中有類myterm +另一個類的項目,例如<li class="myterm subterm1">

我會在選擇器中處理這個。如果逗號分隔,jQuery選擇器可以在多個類上匹配,例如「subterm1,subterm2,subterm3」,所以如果你將它們加入到一個字符串中,你可以對它進行過濾。

var result = $(".myterm").filter(myterms.join(",")); 
0

如果你不想改變你的代碼,那麼你可以使用下面的

var myTerms = $(".myTerm"); 
for (var i = 0; i < myTerms.length; i++) { 
    var myTerm = queryTerms[i]; 
    var $myTerm = $(myTerm); 
    subTerms = $myTerm.find("subTerms"); 
}