在jQuery中遍历DOM

时间:2009-07-11 08:00:34

标签: javascript jquery

我有一堆反复重复的一些HTML代码:

<div class="collapse" id="any_mins">
    <fieldset>
        <legend><img title="Click to expand" class="plus" alt="+" src="" />Heading</legend>
        <table class="mins_table">
          lots of rows and cells go here
        </table>
    </fieldset>
</div>

表格中有表单元素,主要是文本框和选择。我有一些jQuery,如果包含表中有非空表单元素,则会突出显示<legend>标题。它看起来像这样:

//       input                      td        tr     tbody    table     legend     img
$("input[type='text'][value!=0]").parent().parent().parent().parent().show();//the table
$("input[type='text'][value!=0]").parent().parent().parent().parent().siblings().children().attr("src", minus_path);//the image
$("input[type='text'][value!=0]").parent().parent().parent().parent().siblings().addClass("highlighted")//the legend

//       option                 select     td        tr     tbody    table     legend     img
$("option:selected[value!=0]").parent().parent().parent().parent().parent().show();//the table
$("option:selected[value!=0]").parent().parent().parent().parent().parent().siblings().children().attr("src", minus_path);//the image
$("option:selected[value!=0]").parent().parent().parent().parent().parent().siblings().addClass("highlighted")

这有效,但显然是错误的方式。什么是正确的方式?

3 个答案:

答案 0 :(得分:4)

$("input[type='text'][value!=0], option:selected[value!=0]").
    closest("table").show().siblings("legend").addClass("highlighted").
    find("img").attr("src", minus_path);

是我的意思(如果愿意,可以分成多个语句)

docs for closest

答案 1 :(得分:0)

我认为这适用于has选择器:

$( "#table_id:has(input[type='text'][value!=0])").show( );

答案 2 :(得分:0)

你知道什么会让生活更轻松吗?如果.parent()方法接受一个参数,你想要多少级别...你知道这样。

$( “输入[类型= '文本'] [价值!= 0]”)母体(4).show();