我有这一行在我的页面上成功选择了“myclass”类的所有元素:
var myTerms = $(".myTerm");
以上一行有效,myTerms是所有myTerm的数组,每个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
中元素的className答案 0 :(得分:6)
有点困惑于子对象是什么,但我会试一试。
$('.myTerm').each(function(){
subTerms = $(this).children();
});
**编辑**
如果您想要选择选项,请执行
$('.myTerm').each(function(){
subTerms = $(this).children('.subTerm option');
});
答案 1 :(得分:2)
我不确定你在问什么。听起来你想要匹配列表中包含类myterm +另一个类的所有项目,例如<li class="myterm subterm1">
我会在选择器中处理这个问题。 jQuery选择器可以匹配多个类,如果它们以逗号分隔,例如“subterm1,subterm2,subterm3”所以如果你把它们加入一个字符串,你可以对它进行过滤。
var result = $(".myterm").filter(myterms.join(","));
答案 2 :(得分: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(";"));
});
答案 3 :(得分:1)
您可以将第二个查询调用的范围仅限于找到的术语
$(".myTerms").each(function() {
var sub = $(".subTerms", this);
});
答案 4 :(得分:0)
如果您不想更改代码,则可以使用以下
var myTerms = $(".myTerm");
for (var i = 0; i < myTerms.length; i++) {
var myTerm = queryTerms[i];
var $myTerm = $(myTerm);
subTerms = $myTerm.find("subTerms");
}