пользовательский слайдер jquery с использованием параметра пользовательского интерфейса jquery в функции слайда (?)

#javascript #jquery #jquery-ui #slider

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

Вопрос:

В настоящее время я использую ползунок Jquery по умолчанию для изменения значений на карте в jVectormap, но из-за ограниченных возможностей стиля я вынужден переключиться на другой ползунок. Вот код рабочего слайдера Jquery:

     $(".slider").slider({
      value: val,
      min: 2002,
      max: 2012,
      step: 1,
      slide: function( event, ui ) {
        val = ui.value;
        mapObject.series.regions[0].setValues(data.states[ui.value]);
        checkData(val);
      }
    });
  

Теперь я нашел другой слайдер (ionRangeSlider: http://www.spicyjquery.com/demo ,34.html ) это идеально соответствует моим потребностям, но работает не так, как слайдер Jquery по умолчанию, поэтому он теряет функциональность. Вот код ionRangeSlider:

     $("#ion_slider").ionRangeSlider({
      value: val,
      min: 2002,
      max: 2012,
      step: 1,
      type: 'single',
      hasGrid: true
    });
  

Чтобы изменить значения на слайде с помощью ionRangeSlider, я должен использовать функцию onChange в соответствии с документацией слайдера:

       // callback is called on every slider change
      onChange: function (obj) {
        console.log(obj);
      }
  

Итак, что я хочу сделать сейчас, это использовать ionRangeSlider для изменения значений в jVectormap. Моя интерпретация была бы примерно такой:

     $("#ion_slider").ionRangeSlider({
      value: val,
      min: 2002,
      max: 2012,
      step: 1,
      type: 'single',
      hasGrid: true,

      // callback is called on every slider change
      onChange: function ( event, ui ) {
        val = ui.value;
        mapObject.series.regions[0].setValues(data.states[ui.value]);
        checkData(val);
      }
    });
  

Но, конечно, он возвращает ошибку, что пользовательский интерфейс не определен.

введите описание изображения здесь

Я предполагаю, что это связано с пользовательским интерфейсом Jquery, но оно включено в страницу: введите описание изображения здесь

У кого-нибудь есть идеи о том, как обойти это? Извините, я совершенно новичок в этом.

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

1. ui это не пользовательский интерфейс jQuery. Это второй параметр, передаваемый вашей onChange функции. Прочитайте документацию и узнайте, что это такое.

2. для onchange требуется только 1 параметр ionden.com/a/plugins/ion.rangeSlider/en.html

Ответ №1:

Спасибо, ребята, мне удалось это исправить. Это то, что я сделал:

      $("#ion_slider").ionRangeSlider({
      value: val,
      min: 2002,
      max: 2020,
      step: 1,
      type: 'single',
      hasGrid: true,

      // callback is called on every slider change
      onChange: function ( obj ) {
        val = obj.fromNumber;
        console.log(val);
        mapObject.series.regions[0].setValues(data.states[val]);
        checkData(val);
      }
    });
  

Ответ №2:

Из документации:

onChange: Triggered live as the slider value is changed. Returns object with all slider values.

Итак, ваша функция должна быть такой:

 onChange: function (obj) {
    // do stuff here
}
  

Где obj содержатся ваши значения. Я не знаю, в каком формате, поэтому попробуйте это:

 onChange: function (obj) {
    console.log(obj);
}
  

и посмотрите, что это вам дает. Затем извлеките свое значение соответствующим образом.