Множественный запуск слайдера пользовательского интерфейса Jquery

#javascript #jquery #jquery-ui

#javascript #jquery #jquery-пользовательский интерфейс

Вопрос:

Я работаю над шаблоном, который мог бы содержать один или несколько ползунков jQuery UI.

Могу ли я инициализировать все слайдеры из одного скрипта, если настройки для каждого хранятся в атрибуте data-options или data-id на входе?

HTML был бы чем-то вроде:

 <label for="amount">Amount <input type="text" id="amount" data-id="5000" class="ui-slider-input" readonly />
  <div class="max-slider"></div>
</label>
  

У меня это делает один элемент, подобный этому:

 var sliderInput = $('#amount');
var sliderDiv = sliderInput.next('.max-slider');
var sliderMax = sliderInput.attr('data-id');
sliderDiv.slider({
  range: "min",
  value: sliderMax,
  min: 0,
  max: sliderMax,
  step: 10,
  slide: function( event, ui ) {
    sliderInput.val( ui.value );
  }
});
sliderInput.val( sliderMax ) );
  

Но я хотел бы инициализировать несколько ползунков, каждый с разным значением max и step.

Комментарии:

1. Не могли бы вы показать фрагмент HTML, который включает в себя более одного элемента слайдера, тогда вы, надеюсь, получите решение, которое конкретно относится к вашей ситуации, и это избавит нас от создания второго слайдера … 🙂

2. @DavidThomas Второй или третий слайдер будет идентичным, за исключением идентификатора и data-id

Ответ №1:

Вы можете просто выполнить итерацию с each()

 var options = {
    range : "min",
    min   : 0,
    step  : 10,
    slide : function( event, ui ) {
        $(this).prev().val( ui.value );
    }
}

$('.sliders').each(function() {
    $(this).slider(
        $.extend({}, options, {
            value : $(this).data('id'),
            max   : $(this).data('id'),
        })
    );
});
  

Комментарии:

1. Можете ли вы показать, как это работает на скрипке? Когда я пытаюсь, значение больше не меняется при скольжении.

2. Спасибо, пока это работает. Я обновил скрипку , чтобы она была ближе к моим потребностям. Можете ли вы сказать мне, что я делаю не так со значениями max и step?

3. У вас есть массивы в атрибуте, но вы, вероятно, хотели объекты -> jsfiddle.net/adeneo/zxtur473/3

4. Большое спасибо, я знал, что упускаю что-то очевидное!

5. Извините, я думал, что это работает, но на самом деле это выдает TypeError: alignValue.toFixed is not a function при скольжении, а скольжение не является последовательным …?