Ich möchte eine lange Liste kurz machen, indem Sie einige Elemente in langen Unterlisten ausblenden, ohne zusätzliche Verarbeitung auf der Serverseite hinzuzufügen. Das Problem ist, dass das Markup, das vom Server kommt, nicht von mir kontrolliert wird und nicht so gestaltet ist, dass meine Arbeit einfach ist. Hier ist der CodeAusblenden von zusätzlichen Elementen in einer Liste mit jQuery in einer kniffligen Situation (Markup ist nicht ideal)
<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>
Wie Sie feststellen, die Header sind Geschwister zu den Elementen. Jetzt möchte ich einen jQuery-Code haben, der nach jeder Kopfzeile nur 3 Elemente anzeigt und den Rest ausblendet, um die Liste kürzer und brauchbarer zu machen.
Hier ist mein Versuch, die nicht Arbeits sind:
$('#long-list li.header ~ li.item:gt(3)').hide();
$('#long-list li.header ~ li.item:lt(3)').show();
$('#long-list li.header').show();
Die zusätzliche Funktion eines Knotens im Grunde jeden Abschnitts ist das Hinzufügen, die sagen: „5 ist Gegenstände versteckt, zu sagen, wie viele Elemente versteckt mehr ...“
Vielen Dank, aber zuerst die Liste kann wirklich lang sein, dass das Durchschleifen jedes Elements könnte sogar moderne Browser zu Knie bringen ... Zweitens, wie ich im Beispielcode aufgeführt haben, am Anfang der Liste dort Alle Elemente, die keinem Header angehören, sollten nicht ausgeblendet werden. –
Ich bezweifle, dass Sie in der Lage sein werden, dies zu tun, ohne die Elemente irgendwie durchzulaufen. Selbst wenn Sie es schaffen, etwas ohne explizite Schleife zu schreiben, wird es immer noch eine Schleife innerhalb von jQuery geben ... – svinto
Ein Problem bei der Verwendung von .nextAll() ist, dass es einen anderen Header überschreiten kann, wenn weniger als 3 Elemente in einem Header sind. – Soviut