如何正确检查第一个孩子是否被隐藏然后设置功能Bool

时间:2015-09-25 23:09:46

标签: javascript jquery html asp.net

我正在努力想出一个我最近的question的答案,我相信最好的答案包括偷看第一个子元素的函数,然后在该函数之外设置一个bool用于另一个函数使用。

回顾一下: 我有一个GridView,其结构如下:

  • 组报头

    • 部门标头

      • (某人实体)
      • (某人实体)
      • (某人实体)
    • 部门标头

      • (某人实体)
      • (某人实体)
      • (某人实体)
  • 组报头

    • 部门标头

      • (某人实体)
      • (某人实体)
      • (某人实体)
    • 部门标头

      • (某人实体)
      • (某人实体)
      • (某人实体)

基本上,我希望它能够在单击group-header时隐藏所有后续行,直到下一个group-header(如果它们未被隐藏),否则显示它们。

我在https://jsfiddle.net/dLp47mtd/1/设置了代码和HTML,但有问题的代码没有扩展/折叠:

df1[~df1.name.isin(df2.name)]

2 个答案:

答案 0 :(得分:1)

这对我有用,只要您想要显示和隐藏组下的所有行而不记住已经切换过哪些部门。

https://jsfiddle.net/dLp47mtd/5/

// Hide/Show Dept's Data on Click
$(function () {
    $('.dept-header').click(function () {
        $(this).nextUntil('.dept-header, .group-header').toggle();
    });
});

$(function () {
    $('.group-header').click(function () {
        var elm = $(this);
        if (elm.next().is(":visible")) {
            elm.nextUntil('.group-header').hide();
        } else {
            elm.nextUntil('.group-header').show();
        }

    });
});

答案 1 :(得分:0)

Demo

$('.group-header').click(function() 
{
    $(this).nextAll().each(function()
    {
        if($(this).hasClass("group-header"))
            return false;
        if($(this).is(":visible"))
            $(this).hide();
        else
            $(this).show();
    });
});