長いサブリストの要素を隠すことで、サーバー側で余分な処理を追加することなく、長いリストを短くしたい。問題は、サーバーから来るマークアップが私によって制御されておらず、仕事を簡単にするように設計されていないことです。ここにコードがありますjQueryを使用して余分な項目を非表示にする(マークアップは理想的ではない)
<ul id="long-list">
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="header"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="header"></li>
<li class="item"></li>
.
.
.
</ul>
あなたが気づいたように、ヘッダーはアイテムに兄弟です。今、各ヘッダーの後に3つの項目しか表示しないjQueryコードを作成し、リストを短くしてより使いやすくするために残りを隠したいとします。
$('#long-list li.header ~ li.item:gt(3)').hide();
$('#long-list li.header ~ li.item:lt(3)').show();
$('#long-list li.header').show();
余分な機能は、アイテムを隠して、各セクションの下にあるノードを追加隠されているどのように多くのアイテムと言って、5」と言っている:ここで
はない働いている私の試みですもっと...」
ありがとうございますが、まず最初に、各項目をループすると、現代のブラウザでさえもひじになる可能性があります。 次に、サンプルコードにリストされているように、そこのリストの最初にどのヘッダーにも属していないものはすべて隠してはいけません。 –
私はあなたが何とかアイテムをループすることなくこれを行うことができるのではないかと疑います。明示的なループなしで何かを書くことができたとしても、jQuery内にループが残っています... – svinto
.nextAll()の使用に関する1つの問題は、ヘッダー内に3つ未満の項目がある場合、別のヘッダーをオーバーシュートする可能性があることです。 – Soviut