私はUL
セットを実行しようとしています:
<ul>
<li>
<h2>Header 1</h2>
<ul class="collapse">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
</li>
<li>
<h2>Header 2</h2>
<ul class="collapse">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>
<h2>Header 3</h2>
<ul class="collapse">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>
<h2>Header 4</h2>
<ul class="collapse open">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
クラスを持つ子の1つを見つけた場合、クラスopen
を削除したい、collapse
および/またはopen
で見つかったその子より前の親レベルのULから削除したいopen
。多分私は疲れているのかもしれませんが、私はこの重大な欠陥のある論理を持っています。頭の中でそれを理解しようとしていますが、同時に論理的ではないと感じており、これを行うためのより簡単な方法があるはずです。($.each()
私が現在試みていることには欠陥があり、とにかく機能しないことに注意してください)。しかし、誰かが行った場合にこれにアプローチする方法について、いくつかのアイデアを使用できます。
$('ul').each(function()
{
if($(':not(:first)', this))
{
if($(this).hasClass('collapse'))
{
alert('collapse found');
$kid = $(this).child('ul');
if($kid.hasClass('open'))
{
alert('uh')
$kid.parents('ul').removeClass('collapse');
}
}
}
});