2009-08-13 59 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"); 
}