如何最小化div并隐藏包含div?

时间:2016-10-14 19:55:50

标签: javascript jquery html css

所以目前,我在一个函数中使用jQuery,当单击某个切换按钮时,div会将div减少到20px。我希望div中的所有div都隐藏起来,但是如果可能的话,我不想诉诸递归函数/循环。目前,我的切换按钮有点起作用,但是当我隐藏div时,它的所有子节点(如果有的话)都保持原样。我可以简单地将高度强制为20px并使所有包含的div也消失吗?我需要的一个很好的例子就是在板上隐藏注释链(例如reddit)。感谢。

当然,代码:

function toggleComment(child)
{
    if (child.innerHTML.includes("–"))
    {
        //Minimizing
        child.innerHTML = "[+]";
        $(child).parent().addClass("minimized");
        hideChildren($(child).parent());
    }
    else
    {
        //Maximizing
        child.innerHTML = "[–]";
        $(child).parent().removeClass("minimized");
        showChildren($(child).parent());
    }
}

function hideChildren(parent)
{
    for (var i = 0; i < parent.children().length; i++)
    {
        var child = parent.children().eq(i);
        if (!child.hasClass('ignoreOnHide'))
        {
            parent.children().eq(i).hide();
        }            
        if (child.has("div"))
        {
            hideChildren(child);
        }
    }
}

function showChildren(parent)
{
    for (var i = 0; i < parent.children().length; i++)
    {
        var child = parent.children().eq(i);
        parent.children().eq(i).show();
    }
}

此代码部分有效。它在视觉上按预期运行,但是会出现更复杂的问题。我不想使用递归函数和循环,因为它再次没有完全按预期工作。确切的问题很难解释,与这个问题无关。有没有其他方法可以解决这个问题,最小化div并完全隐藏其内容,没有循环&amp;这样?

3 个答案:

答案 0 :(得分:0)

尝试添加

overflow: hidden;

到父div以隐藏位于其宽度/高度之外的元素。

答案 1 :(得分:0)

您可以使用CSS属性&#39; overflow&#39;这样div的内容就会被剪掉。

.my_div { overflow: hidden; }

使用过渡效果,您也可以使用“不透明度”隐藏内容。式:

.my_div > * { opacity: 1; transition: opacity 2s ease; }
.my_div.reduced > * { opacity: 0; }

这会使内容顺利淡出。

答案 2 :(得分:-1)

使用jQuery隐藏容器的子项:

$('div.container div').fadeOut();