現在のところ、特定のトグルボタンをクリックするとdivを20pxに減らす関数でjQueryを使用しています。私はそのdivの中のすべてのdivも同様に隠すことを望みますが、私はできる限り再帰的な関数/ループに頼らざるをえません。現在、トグルボタンの種類は機能していますが、divを非表示にすると、すべての子要素(ある場合)が以前の場所に残ります。高さを20ピクセルにするだけで、すべてのdivを消すことはできますか?私が必要とする良い例は、ボード上にコメントチェーンを隠す(redditなど)ようにすることです。ありがとう。divを最小限に抑え、divを含むdivを非表示にするにはどうすればよいですか?
確かに、コード:
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を最小限に抑えてループを使わずに内容を完全に隠すために、この問題について別の方法がありますか&?その幅/高さの外側に位置する要素を非表示にするには、あなたの親のdivに
overflow: hidden;
を追加
質問はそれを再現するために必要な最短のコードを含める必要があります* *](https://blog.stackoverflow.com/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/)。 [**最小限の、完全で検証可能なサンプルの作成方法**](http://stackoverflow.com/help/mcve) –
あなたはすでに試みたコードをお持ちですか?もしそうなら、それをあなたの質問に含めるべきです。 – TylerH
親divに 'overflow:hidden'を追加します。 –