jQuery替换嵌套的getElementsByTagName

时间:2014-12-03 14:39:19

标签: jquery nested getelementsbytagname

我想将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”)是不正确的,但我在这里尝试了很多其他的东西,我得到语法错误或没有更好的结果。形成语法的正确方法是什么,让我遍历所有表中的所有输入?

1 个答案:

答案 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
});

...这基本上就是我对上面的第一个片段所做的。