NoUIslider-обновить диапазон по требованию
У меня есть два ползунка, и я хотел бы обновить диапазон одного ползунка на основе движения другого.
например; slider_1 и slider_2 имеют диапазон 1-10. Когда я перемещаю slider_1 из позиции 1 в 2, Диапазон slider_2 изменяется от 1-10 до 1-20. Если я перемещаю slider_1 из позиции 2 в 3, slider_3 теперь имеет диапазон от 1-30 и так далее.
Я инициализирую ползунок следующим образом:
function slider() {
$(".slider").noUiSlider({
orientation: "horizontal",
start: [0],
range: {
min: 0,
max: 10,
},
connect: 'lower',
direction: "ltr",
step: 1,
});
};
лучший способ, которым я могу придумать реализацию это до сих пор деконструировать весь слайдер, и повторно инициализировать его с новым диапазоном каждый раз. Однако я не уверен, как правильно разобрать слайдер.
есть идеи о том, как это сделать?
3 ответов
noUiSlider предлагает updateOptions
метод, который сохранит все настройки, за исключением новых, которые вы передадите. The документация по обновлению здесь.
начиная с noUiSlider 8, вы можете сделать:
slider.noUiSlider.updateOptions({
range: {
'min': 20,
'max': 30
}
});
раскрытие информации: я автор плагина.
можно использовать updateOptions функции путем передачи объекта в качестве аргумента. Yo может создать свой собственный" объект конфигурации " программно следующим образом:
config = {
orientation: "horizontal",
start: [100,200],
range: {
min: 0,
max: 200,
},
connect: 'lower',
direction: "ltr",
step: 10,
};
а затем обновите ползунок в любом месте вашего Javascript:
$(".slider").updateOptions(config);
нужно позвонить destroy()
а то create()
для динамического изменения диапазона. Невозможно изменить диапазон после отображения элемента управления.
slider.noUiSlider.destroy()
slider.noUiSlider.create({
range: {
'min': 20,
'max': 30
}
});