Добавить несколько вызовов плагинов jQuery в массив и использовать методы - PullRequest
0 голосов
/ 23 января 2019

!!! "проблема решена в разделе редактирования"

Я пытаюсь многократно использовать один и тот же плагин jQuery на одной странице. Плагин jQuery: Ползунок диапазона

Сначала я установил пустой глобальный массив для добавления вызова плагина:

var sliders = [];

Затем плагин множественных вызовов, подобный этому:

var slider1 = new rSlider({
    target: "#slider1",
    values: set_max_value_to_slider(),
    range: true,
    labels: false,
    scale: false,
    tooltip: false,
    onChange: function(values){setrangeslidervaluestodiv("1");}
});

Затем я пишу вызываемый плагин в массив:

window.sliders["slider1"] = slider1;

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

У каждого ползунка есть два входа для установки диапазона от ползунка. Измените значения в ползунке, установите эти значения для входов, а измените значения во входах, установите для этих значений ползунок. Установить входные события:

$('#filters_form').find('input[data-slider-destination]').focusout(function(){
    set_input_values_to_slider($(this).attr('data-slider-destination'));
});

Функция для установки значений от входа к ползунку:

function set_input_values_to_slider(att) {
   var v1 = $("#p_for_slider"+att+"value1").val();
   var v2 = $("#p_for_slider"+att+"value2").val();
   window.sliders['slider'+att].onChange(function(){});
   window.sliders['slider'+att].setValues(v1, v2);
   window.sliders['slider'+att].onChange(function(values){
       setrangeslidervaluestodiv(att);
   });}

onChange и setValues являются методами плагина jQuery.

Но есть проблема с вызовом этого метода, он не работает. Когда я пытаюсь показать объект в консоли, это видно правильно: console.log(JSON.parse(JSON.stringify(window.sliders['slider'+att])));

Что я пытаюсь вызвать методами: Очистить при изменении:

window.sliders["slider"+att].unbind("change"); window.sliders["slider"+att].off("change"); window.sliders["slider"+att]["onChange"] = "";

Установить значения: window.sliders["slider"+att]["set"] = "["+v1+","+v2+"]"; $('#slider'+att).rSlider({ set:[v1,v2], onChange: function(values){setrangeslidervaluestodiv(att);} });

Проблема в том, что изменение входных значений не устанавливает значение ползунка диапазона, методы объекта rSlider не вызывают.

Есть ли варианты вызова методов для массива вызываемых объектов?

Спасибо за любую помощь

EDIT:

Хорошо, я исправлю это. Функция setValues требует целочисленных значений. Из ввода я получил строку, так что просто: sliders['slider'+att].setValues(parseInt(v1), parseInt(v2)); сделать это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...