Есть ли лучший способ написать это в JQuery? - PullRequest
0 голосов
/ 26 марта 2010
$(".sectionHeader").click(function() {
    var row = $(this).parent();
    while (row.next().length != 0) {
        row = row.next();
        if (row.children().first().is('th')) return;
        row.toggle();
    }
});

Ответы [ 2 ]

2 голосов
/ 27 марта 2010

Похоже, у вас есть строки в таблице, которые являются заголовками разделов, в этом случае вы можете свернуть до следующего заголовка раздела, как это:

$(".sectionHeader").click(function() {
    $(this).closest("tr").nextUntil(".sectionHeader").toggle();
});

Вы можете сделать его более эффективным с помощью delegate(), например:

$("#sectionTable").delegate(".sectionHeader", "click", function() {
    $(this).closest("tr").nextUntil(".sectionHeader").toggle();
});

Прикрепляется один обработчик событий для всей таблицы вместо 1 на .sectionHeader строку.

0 голосов
/ 26 марта 2010
$(".sectionHeader").click(function() {
    $(this).parent().each(function(index, element){
      if($(element).children().first().is('th')) return;
      $(element).toogle();
    });
});
...