2014-09-10 12 views
6

Ich habe zwei Schieberegler und ich möchte den Bereich eines Schiebereglers basierend auf der Bewegung des anderen aktualisieren.NoUIslider - Update-Bereich auf Anfrage

Zum Beispiel; slider_1 und slider_2 haben beide einen Bereich von 1-10. Wenn ich Slider_1 von Position 1 nach 2 verschiebe, ändert sich der Bereich von Slider_2 von 1-10 zu 1-20. Wenn ich slider_1 von Position 2 nach 3 verschiebe, hat slider_3 jetzt einen Bereich von 1-30 und so weiter.

ich initialisieren den Schieber wie folgt:

function slider() { 
     $(".slider").noUiSlider({ 
      orientation: "horizontal", 
      start: [0], 
      range: { 
       min: 0, 
       max: 10, 
      }, 
      connect: 'lower', 
      direction: "ltr", 
      step: 1, 
     }); 
    }; 

Der beste Weg, die ich bisher bei der Umsetzung diesen kommen kann, ist den ganzen Schieber dekonstruieren und neu initialisieren es mit dem neuen Bereich jedes Mal. Allerdings bin ich mir nicht sicher, wie man den Slider richtig dekonstruiert.

Irgendwelche Ideen, wie das gemacht werden sollte?

Antwort

15

noUiSlider bietet eine update Funktion, die alle Einstellungen speichert, außer für neue, die Sie übergeben.

Ausführen des folgenden Code auf einem vorhandenen Schieber, zum Beispiel:

$('#slider').noUiSlider({ 
    range: { 
     min: 20, 
     max: 30 
    } 
}, true); 

den Bereich ändern. Beachten Sie, dass das zweite Argument auf true gesetzt ist; Es wird ermöglicht, einen Schieberegler neu zu erstellen. Weitere Informationen finden Sie in der documentation on rebuilding.

Edit:

In der nicht-jQuery-Version 8 können Sie tun:

slider.noUiSlider.updateOptions({ 
    range: { 
     'min': 20, 
     'max': 30 
    } 
}); 

Disclosure: Ich bin der Plugin Autor.

+0

Das ist es. Danke für Ihre Hilfe! Ich bin mir nicht sicher, wie ich das in der Dokumentation verpasst habe. Tolles Plugin übrigens. – DGDD

+5

Ab Version 8 funktioniert das nicht - Sie müssen zerstören und neu aufbauen. – thebenedict

1

Sie können Updateoptions Funktion, indem ein Objekt als Argument verwenden.

config = { 
     orientation: "horizontal", 
     start: [100,200], 
     range: { 
      min: 0, 
      max: 200, 
     }, 
     connect: 'lower', 
     direction: "ltr", 
     step: 10, 
    }; 

und aktualisieren Sie dann den Schieberegler überall in Ihrem Javascript: Yo könnte Ihr eigenes „Konfigurationsobjekt“ programmatisch wie dies baut

$(".slider").updateOptions(config); 
0

Sie müssen destroy() anrufen und dann create(), um dynamisch den Bereich zu ändern . Es gibt keine Möglichkeit, den Bereich zu ändern, nachdem das Steuerelement gerendert wurde.

slider.noUiSlider.destroy() 
slider.noUiSlider.create({ 
    range: { 
     'min': 20, 
     'max': 30 
    } 
});