表示/非表示機能here(私の仕事ではありませんが、私の問題は似ていません)、それに基づいてフィドルのデモ(https://jsfiddle.net/q7sfeju9/)を作成しましたが、行を表示します。toggleClassは以前のクリックイベントjqueryを保持していません
最初にLevel 1.2
を隠すと、Level 1.1
と最後にLevel 1
が正常に機能します。ここでLevel 1
を再度クリックすると、すべてのサブレベルではなく、Level 1.1
とLevel 1.2
のみが表示されます。しかし、それはすべてのレベルとサブレベルを示しています。サブレベルを隠すと、そのレベルがクリックされるまで隠す必要があります。
どうすればいいですか?事前に
おかげ
更新:
以下のコードを参照してください -
$('tr').click(function(event) {
event.stopPropagation();
var currentLevel = parseInt($(this).attr('class')),
state = $(this).hasClass('hiding'),
nextEl = $(this).next(),
nextLevel = parseInt(nextEl.attr('class'));
while (currentLevel < nextLevel) {
nextEl.toggle(state);
nextEl = nextEl.next();
nextLevel = parseInt(nextEl.attr('class'));
}
$(this).toggleClass('hiding');
});
tr[class^="2"] td {
padding-left: 20px;
}
tr[class^="3"] td {
padding-left: 40px;
}
tr[class^="4"] td {
padding-left: 60px;
}
<table id="test">
<tr class="1">
<td>Level 1</td>
</tr>
<tr class="2">
<td>Level 1.1</td>
</tr>
<tr class="3">
<td>Level 1.1.1</td>
</tr>
<tr class="3">
<td>Level 1.1.2</td>
</tr>
<tr class="2">
<td>Level 1.2</td>
</tr>
<tr class="3">
<td>Level 1.2.1</td>
</tr>
<tr class="3">
<td>Level 1.2.2</td>
</tr>
<tr class="4">
<td>Level 1.2.2.1</td>
</tr>
<tr class="4">
<td>Level 1.2.2.1</td>
</tr>
<tr class="1">
<td>Level 2</td>
</tr>
<tr class="2">
<td>Level 2.1</td>
</tr>
<tr class="3">
<td>Level 2.1.1</td>
</tr>
<tr class="3">
<td>Level 2.1.2</td>
</tr>
</table>
あなたが望むように動作しないコードが見つかりました。あなたは何か変えようとしましたか? –
@ 8odoros、私はJQueryで新しく、私は何をする必要があるかわかりません。ご指摘いただきありがとうございます。 – jacklondon
私は知っていますが、コードはわずか10行です。あなたは少なくとも彼らが何をし、いくつかの変更を行うには、いくつかの努力を示して理解しようとする必要がありますdone.Read http://stackoverflow.com/help/how-to-ask –