Wie erstellen Sie einfach next und prev trigger-Knopf für Schieberegler, die Paginierung Tasten?
Ich versuche zu tragen, eine Klasse zwischen li
's mit kombinieren each()
und eq()
Methoden, wenn Schaltflächen angeklickt. Ich verwende den gleichen code mit previous und next Tasten, mit Ausnahme i+1
und i-1
aber es ist wieder, mir verschiedene Probleme.
Hier ist das jsFiddle zu untersuchen.
html:
<span class="prev">prev</span>
<ul>
<li>0</li>
<li>1</li>
<li class="active">2</li>
<li>3</li>
<li>4</li>
</ul>
<span class="next">next</span>
jQuery:
var li = $('li');
$('.prev').click(function() {
li.each(function(i) {
if ( $(this).hasClass('active') ) {
console.log(i);
//this returning current true value = 2
li.removeClass('active');
li.eq(i-1).addClass('active');
//this is working better
//problem is: not selecting 4
}
});
});
$('.next').click(function() {
li.each(function(i) {
if ( $(this).hasClass('active') ) {
console.log(i);
//this returning current true value = 2
//problem starts:
//li.removeClass('active');
//when this is active; all active classes are gone
li.eq(i+1).addClass('active');
//try to select next 'li' here
//but it is selecting all li's bigger than current value
}
});
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn aus irgendeinem Grund müssen Sie den index, können Sie immer tun:
GEIGE
Wenn nicht :
GEIGE
i
ist gleich oder mehr als die Länge desli
, die die Anzahl der Listenelemente, dann starten Sie bei null wieder an, ansonsten nur hinzufügen zui
. Es ist ein ternärer Ausdruck (if / else)!Ich würde versuchen mit etwas mehr wie:
Hier arbeitet jsFiddle.
mit der 'weiter', selector: Jquery Next
Ich vermeiden, dass die Mathematik, wenn möglich. Zählen ist schwer :-). Das sagte ich mir denke, dein problem oben mit dem index. Schwer zu sagen. Ich möchte vermeiden, mit Hilfe von Selektoren wie "li" im Umgang mit einer Liste wie dieser. Versuchen Sie, eine Klasse, die 'ul' Teil von ihm und auf Ihre li ' s als: ".meineliste li"
Sollten Sie
return false;
nachdem Sie Ihre erste Klasseactive
:http://jsfiddle.net/ufomammut66/np4Pt/
Was passiert ist Ihr Iteration über die Elemente bewegen sich und verändern sich gegenseitig in Ordnung. So, wie Sie gehen durch jeden Fall Ihre Einstellung an die nächste in der Reihenfolge, wie aktiv die wiederum macht den nächsten
$(this).hasClass('active')
check wahr. Dies ist der Grund, warum die Vorherige Ereignis zu arbeiten, wir ziehen in umgekehrter Reihenfolge aus der Schleife. So brauchen wir nur zu stoppen, Durchlaufen unsere Sammlung nach finden wir unsere aktiven Fall.Bearbeiten 1
Können Sie
.length
auf jedes ausgewählte Objekt zu bekommen, wie viele zurückgegeben werden. Also in dem Beispiel-code, den Sie zur Verfügung gestellt, das wir verwenden könnenli.length
zu bekommen, wie viele li-Elemente auf der Seite. Sie möchten möglicherweise verwenden Sie einen Klassenselektor, nur um sicherzustellen, dass andere li-Elemente nicht verwendet werden, um zu berechnen Ihre Decke. Ich habe aktualisiert die jsFiddle, um diese änderungen widerzuspiegeln.Könnten Sie versuchen, auch diese:
Versuchen Sie, die folgenden aktualisierten jsFiddle:
Dies wird eine Schleife Durchlaufen, um Letzte element aktiv ist (wenn der Vorherige auf den ersten) und das erste element aktiv ist (wenn der nächste auf der Letzte).