2009-05-20 9 views
14

Ich habe einen Schieber wie so definiert:Wie setze ich den jQuery UI Slider-Wert programmgesteuert und feuere Ereignisse?

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 

Wenn Sie den Schieberegler mit der Funktion Dia zugewiesen wird kein Problem genannt. Ich habe eine Tabelle, die eine Zeile mit einer SelectedItem-Klasse enthalten kann oder auch nicht. Ich arbeite an einer Methode, die diese Zeile beim Laden der Seite an die Spitze der Tabelle "scrollt".

Das Fleisch des Verfahrens sieht wie folgt aus:

$("#slider").slider('value', $rows.length - index); 

Diese Eigenschaft legt den Slider Wert und der Schieber macht richtig, aber mein Dia-Handler aufgerufen wird nie die Arbeit auf dem Tisch zu tun.

Was fehlt mir hier?

Antwort

22

Sieht aus wie der Schieberegler-Parameter nur für Mausereignisse gültig ist. Wenn Sie den Wert programmgesteuert festlegen, wird das Änderungsereignis ausgelöst. Also änderte ich meine Einstellung zu dem, was ich wollte. „: Function (... slide“ und „ändern: function (“ funktioniert perfekt, aber den Schieber von außen zB danach zu ändern, indem ein Miniaturbild klicken, oder jeden

$("#slider").slider({ 
     orientation: "vertical", 
     range: "min", 
     min: 0, 
     max: totalRows, 
     value: totalRows, 
     slide: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     }, 
     change: function(e, ui) { 
      scrollTheTable(ui.value, totalRows, visibleRows, $table); 
     } 
     }); 
+0

Großartig! Ich hatte dieses Problem auch und das half. –

+1

Ruft ScrollTheTable nicht zweimal auf, wenn der Schieberegler mit der Maus geändert wird? Die Verwendung des Change Event Handlers funktioniert nur für mich. – xr280xr

0

Warum rufen Sie das nicht an, nachdem Sie den Wert festgelegt haben?

6

Um den Schieberegler, das Verfahren, das oben mit zu initialisieren. andere div mit einem "ein-Klick-Ereignis" können Sie verwenden:

$("#slider").slider('value', newvalue); 

Der wesentliche Hinweis für mich, die leicht einen falschen Code Linie war ($ rows, PHP?):

$("#slider").slider('value', $rows.length - index); 
0

als in api von jquery angegeben: mit s Lider ('value', X) ruft die eingebaute Änderungsfunktion auf. Daher ist ein Vorschlag, keinen Folienrückruf zu verwenden.

0

Ich verwende einen Schieberegler mit 2 Griffen. Ich war in der Lage, es mit diesem Code programmgesteuert zu aktualisieren:

$("#slider-range").slider('values',[57,180]).change(); 
Verwandte Themen