Преодолев DOM в jQuery - PullRequest
       23

Преодолев DOM в jQuery

0 голосов
/ 11 июля 2009

У меня есть куча этих маленьких кусочков 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 ]

4 голосов
/ 11 июля 2009
$("input[type='text'][value!=0], option:selected[value!=0]").
    closest("table").show().siblings("legend").addClass("highlighted").
    find("img").attr("src", minus_path);

, как я бы (разбить на несколько утверждений, если предпочтительнее)

документы для closest

0 голосов
/ 12 июля 2009

Вы знаете, что облегчит жизнь? Если метод .parent () примет parataer на сколько уровней вы хотели бы подняться ... вы знаете, как это.

.

$ ( "вход [тип = 'текст'] [! Значение = 0]") Родитель (4) .show ();

0 голосов
/ 11 июля 2009

Я думаю, что это может работать с has селектором:

$( "#table_id:has(input[type='text'][value!=0])").show( );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...