【问题标题】:Multiple Jquery UI Slider non linear value多个 Jquery UI Slider 非线性值
【发布时间】:2014-01-31 11:31:22
【问题描述】:

我一直在寻找并试图找到解决方案,但不幸的是无法解决。我有多个 jQuery UI 滑块,它们在从数组中滑动时都有它们的值。最后,我试图获取滑块的值并将其与其他滑块相加。这是只有两个滑块的代码:

$(function () {
    var labelArr = new Array(0, 200, 400, 600);
    $("#slider").slider({
        values: 0,
        min: 0,
        max: labelArr.length - 1,
        slide: function (event, ui) {
            mbdata = labelArr[ui.value] + $("#slider_2").slider("value") + $("#slider_3").slider("value") + $("#slider_4").slider("value") + $("#slider_5").slider("value") + $("#slider_6").slider("value");
            g1.refresh(mbdata);
        }
    });
});

$(function () {
    var labelArr = new Array(0, 300, 900, 1200);
    $("#slider_2").slider({
        value: 0,
        min: 0,
        max: labelArr.length - 1,
        slide: function (event, ui) {
            mbdata = labelArr[ui.value] + $("#slider_3").slider("value") + $("#slider").slider("value") + $("#slider_4").slider("value") + $("#slider_5").slider("value") + $("#slider_6").slider("value");
            g1.refresh(mbdata);
        }
    });
});

第一个滑块效果很好,但不幸的是,当我滑动第二个滑块时,值没有显示数组,而只是 1 , 2 , 3

有人可以帮我帮忙吗

非常感谢

【问题讨论】:

    标签: javascript jquery jquery-ui user-interface uislider


    【解决方案1】:

    我更改了整个脚本,但希望它现在可以按照您的意愿进行操作 - 只需扩展 sliderRangesValues 数组(并添加一个具有正确 ID 的新 div)以添加更多滑块和值。它现在是一个更加灵活的脚本:

    http://jsfiddle.net/fKUAe/1/

    虚拟 HTML:

    <div id="slider0" class="slider"></div>
    <div id="slider1" class="slider"></div>
    <div id="slider2" class="slider"></div>
    <input type="text" id="slidervalues" value="0" />
    

    jQuery:

    var sliderRangeValues = [
        [0, 100, 200, 300],
        [0, 300, 600, 900],
        [0, 1, 2, 3, 4, 5]
    ];
    
    function getAllSliderValues(sliderCount) {
        var sliderValues = 0;
        for (var i = 0; i < sliderCount; i++) {
            var uiValue = $('#slider' + i).slider('value');
            sliderValues += sliderRangeValues[i][uiValue];
        }
        $('#slidervalues').val(sliderValues);
    }
    
    function initSlider(i, sliderCount) {
        $('#slider' + i).slider({
            values: 0,
            min: 0,
            max: sliderRangeValues[i].length - 1,
            slide: function (event, ui) {
                $('#slider' + i).slider('value', ui.value);
                getAllSliderValues(sliderCount);
            }
        });
    }
    
    $(function () {
        var sliderCount = $('.slider').length;
        for (var i = 0; i < sliderCount; i++) {
            initSlider(i, sliderCount);
        }
    });
    

    【讨论】:

    • 非常感谢 :)) 非常感谢。如何调用所有滑块并执行重置按钮?并放置所有值为 0 的句柄
    • 如果您阅读滑块 API 文档,您可以自己回答这些问题:api.jqueryui.com/slider,如果您遇到问题,请随时提出新问题。可以使用任何元素上的单击处理程序来完成重置按钮,例如: $('.slider' ).slider({ value: 0 }); - 如果一个问题得到了回答并且它帮助了你,接受它或至少投赞成票
    • 感谢和抱歉没有使用堆栈溢出我仍然很新,并从中得到了要点。我阅读了 api 并实现了你所说的语句,但是由于上面的代码在循环中生成滑块,如何在其中实现你的 reset 语句?
    • 我更新了一些重置按钮的小提琴:jsfiddle.net/fKUAe/2。研究这些 sn-p 并尝试理解它。因为看起来你是 jquery 和/或 JS 编码的新手,所以真的试着理解每一行。我现在不会从这一点继续。上面的这个 sn-p 有效,如果你得到它,你想要实现的每一个附加功能都应该很容易。
    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 2020-01-31
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多