将多个jQuery插件调用添加到数组并使用方法

时间:2019-01-23 10:30:20

标签: javascript jquery arrays jquery-plugins

!!! “编辑部分中的问题已解决”

我尝试在一页中多次使用相同的jQuery插件。 jQuery插件:Range slider

首先,我设置一个空的全局数组来添加插件调用:

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;

当然,我为每个插件调用设置了不同的名称。 我使用window,因为使用了全局数组。

每个滑块都有两个输入,可以从滑块设置它们的范围。 滑块中的更改值将此值设置为输入,而输入中的更改值将此输入值设置为滑块。 设置输入事件:

$('#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);
   });}

onChangesetValues是jQuery插件方法。

但是调用此方法存在问题,它不起作用。 当我尝试在控制台中显示对象时,它显示正确: console.log(JSON.parse(JSON.stringify(window.sliders['slider'+att])));

我尝试调用的方法: 清除onChange:

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对象的方法不调用。

是否有一些选项可以调用被调用对象数组上的方法?

感谢您的帮助

编辑:

好的,我修理那个。函数setValues需要为整数。从输入中我得到了字符串,所以很简单:sliders['slider'+att].setValues(parseInt(v1), parseInt(v2));可以正常工作。

0 个答案:

没有答案