我想将jQuery用于嵌套的getElementsByTagName。许多问题涉及每个嵌套,但它们转向特殊主题。我无法弄清楚可能非常简单的事情。在纯JavaScript中我有:
tables = document.getElementsByTagName('table');
for (var t = 0; t < tables.length; t++)
{
thisTable = tables[t];
if (thisTable.id == "specialID")
{
inputs = thisTable.getElementsByTagName("input");
for (var r=0; r < inputs.length; r++)
{
thisInput = inputs[r];
if (thisInput.type == "radio")
{
if (thisInput.checked == true)
{
[do stuff]
break;
}
}
}
}
}
基本上,这会对所需表格中的某些单选按钮进行一些测试。当我尝试转换为jQuery时,嵌套的getElementByTagName的语法是导致我出现问题的原因。到目前为止,我有这个:
$("table").each(function () {
if (this.id == "specialID")
{
$("this:input").each(function () {
alert("I am here");
[test for radio and do stuff]
});
}
});
表上的第一个“each”工作正常并找到所有表。但输入上的第二个“每个”不会选择特定表中的任何输入控件。我怀疑$(“this.input”)是不正确的,但我在这里尝试了很多其他的东西,我得到语法错误或没有更好的结果。形成语法的正确方法是什么,让我遍历所有表中的所有输入?
答案 0 :(得分:0)
由于您只能拥有id
"specialID"
的一个表,您可以这样做:
$("#specialId input").each(function () {
// ...do stuff with the input
});
但是,在 general 的情况下,你可能有多个外部元素,并且只想处理内部元素中的某些元素:
$("selector-for-outer-element").each(function () {
if (/*...some condition...*/) {
$(this).find("selector-for-inner-elements").each(function() {
// ...do something with the inner elements
});
}
});
或者如果条件可以表示为选择器,则自然地应用条件:
$("selector-for-outer-element.some-condition selector-for-inner-elements").each(function () {
// ...do something with the inner elements
});
...这基本上就是我对上面的第一个片段所做的。