Ich habe dieses einfache jQuery UI Slider-Setup mit einem Bereich und zwei Standardwerten, die sich überlappen. Die ganze Sache (mit ein paar Schnickschnack) kann in diesem Spiel gefunden werden: Ссылка
%Vor%Das Problem dabei ist, dass beim Versuch, den einzelnen sichtbaren Anfasser nach rechts zu ziehen, dies fehlschlägt, weil jQuery UI immer den minimalen Anfasser oben platziert. Dies ist offensichtlich aus einer Reihe von Gründen schlecht.
Gibt es eine Möglichkeit, jQuery UI zu erlauben, auszuwählen, welcher Ziehpunkt in welche Richtung gezogen werden soll?
Ah, ich mag es, durch 11k libs zu essen, nicht wahr? :)
Hinweis: Folgendes ist für jQuery UI 1.8.5
Wie auch immer, hier ist eine ziemlich saubere Lösung:
%Vor%Und das ist alles, oh, wie es funktioniert, natürlich:
Und zu Ihrem Vergnügen hier ist ein diff
:
Speichere es in ui.diff
und tue patch -i ui.diff jquery-ui.js
.
Ich entschuldige mich bei Ivo, dessen ausgezeichnete Antwort da bin ich mir sicher sehr anstrengen müssen. Das Problem ist, dass ich diese Lösung nicht anwenden konnte, weil ich bereits auf 1.8.6 bin, ich kann die 1.8.5-Quellen nirgendwo finden, wo ich sie anwenden könnte, und irgendwie konnte ich den Patch nicht zum Laufen bringen für 1.8.6, auch wenn ich versuchte, die Zeilen manuell hinzuzufügen.
Das Folgende ist meine Lösung für das Problem. Es ist einfacher als das von Ivo, aber das könnte an den Unterschieden zwischen den beiden Point-Releases liegen. Die Lösung ist wie folgt:
_handleIndex
) umgedreht, wodurch das maximale Handle als Referenz für das interne _slide
verwendet wird. Funktion anstelle der ersten. Das diff
ist wie folgt:
Der erste Teil sollte in den Initialisierungsbereich eingefügt werden, wo die Variablen deklariert werden, der zweite in die _mouseCapture
-Funktion direkt vor dem Aufruf von _slide
und der letzte Teil in die _mouseDrag
-Funktion, auch rechts vor dem Aufruf von _slide
.
Hier ist ein funktionierendes Beispiel mit dem Patch: Ссылка
Eine Kopie der gepatchten jQuery UI 1.8.6 Slider-Datei finden Sie hier: Ссылка
Wie immer wurde dieser Patch nicht ausführlich getestet und es ist nicht garantiert, dass er für alle Szenarien funktioniert.
Ich würde sagen, das ist ein Fehler, doppelt, weil es bereits Logik gibt, die verhindert, dass ein "Deadlock" eintritt, wenn sich beide Schieberegler an der minimalen / weit linken Position befinden:
%Vor%Es sieht so aus, als ob Ticket # 3736 noch offen ist, und erwähnt das spezifische Problem, das Sie sehen.
Ich habe Yi Jiangs Lösung versucht mit 1.8.12 und es brach auf einem Slider mit einem einzigen Griff, aber funktionierte perfekt, nachdem ich
geändert habe %Vor%bis
%Vor%Setzen Sie dies in den Initialisierungsbereich, in dem die Variablen deklariert sind:
%Vor% Setzen Sie dies direkt vor dem Aufruf von _mouseCapture
:
_slide
%Vor%
Und das in die Funktion _mouseDrag
, auch direkt vor dem Aufruf von _slide
Ich habe gerade einen else if
zum obigen Code hinzugefügt; es funktioniert gut in jQuery 1.8.14 für
beide linken und rechten Button-Handler.
Eine andere Lösung: Testen Sie beide Werte, und wenn sie identisch sind, kehren Sie zum letzten Schritt zurück.
%Vor%Tags und Links javascript jquery jquery-ui jquery-ui-slider