jQuery隐藏子元素打开其子元素

时间:2015-09-13 20:46:53

标签: javascript jquery hide

我使用一个表,行可以有子行,它可以下降几个级别, 现在发生的事情是,当隐藏子元素时,它会打开该子元素元素。

继承我的jQuery:

$(document).ready(function() {
    function getChildren($row) {
        var children = [], level = $row.attr('data-level');
        while($row.next().attr('data-level') > level) {
             children.push($row.next());
             $row = $row.next();
        }            
        return children;
    }        
    $('.parent').on('click', function() {
        var children = getChildren($(this));
        $.each(children, function() {
            $(this).toggle();
        })
    });
    $(".parent a").click(function(e) {
     e.stopPropagation();
    })
})

我已经设置了一个jsfiddle,你可以看到发生了什么

https://jsfiddle.net/rhvye8k0/4/

如果您点击第一个" +"你会看到我试图描述的内容。

无法思考如何解决问题

更新

对其进行了排序并更新了jsfiddle https://jsfiddle.net/rhvye8k0/5/

可能有一种方法可以减少jQuery,但它现在可以使用

1 个答案:

答案 0 :(得分:0)

您的问题是$(this).toggle();的onclick处理程序中的.parent。第3级的trstyle="display:none",其他则没有。 toggle()将切换接收元素的可见性,以便显示其他元素(其display隐式block),并隐藏第3级。