0

这是我正在尝试完成的示例图像

在此处输入图像描述

假设我从 150 值单击手柄应该只移动到 50 而不会跳到 150。我再次单击它从 50 移动到 100。

反过来说,手柄的值是 150,然后我点击值 5,它不应该直接跳到 5,它应该从 150 移动到 100。

我怎样才能做到这一点?

这是我的代码:

var valMap = [5, 10, 20, 50, 100, 150];
value = 0;
var slider = $("#slider").slider({
    disabled: false,
    animate: true,
    min: 0,
    max: valMap.length - 1,
    slide: function (event, ui) {
        slider.slider("option", "animate", "slow");

    },
    change: function () {

        var Slideval = $(this).slider('value');
        console.log(Slideval, value)
        if(value < Slideval) {
            console.log("incremented")
        } else if(value > Slideval) {
            console.log("decremented")
        }
        value = Slideval;
    }
});

这是一个示例 jsfiddle:http: //jsfiddle.net/endl3ss/jNwww/21/

4

3 回答 3

1

I don't know the slider too much, but here is a working solution based on your specification:

http://jsfiddle.net/5xMMz/11/

and here is the full code for reference

    var valMap = [5, 10, 20, 50, 100, 150,500,1000,5000];
    value= 0;
    var lastSlideValue = 0;
    var internalSlideCalling = false;

    var slider = $("#slider").slider({
    disabled : false,
    animate : true,
    min : 0,
    max : valMap.length - 1,
    slide : function(event, ui) {
        slider.slider("option", "animate", "slow");
    },
    change: function(){

        var Slideval = $(this).slider('value');

        if (!internalSlideCalling)
        {
            if (Slideval>lastSlideValue && lastSlideValue < $(this).slider('option','max'))
            {
                Slideval = lastSlideValue+1;
            }
            else if (lastSlideValue > $(this).slider('option','min'))
            {
                Slideval = lastSlideValue-1;                
            }
            lastSlideValue = Slideval;
        }

        console.log(Slideval, value)

        if(value < Slideval) {
          console.log("incremented")
        } else if(value > Slideval){
          console.log("decremented")
        }
        value = Slideval;

        if (!internalSlideCalling){
            internalSlideCalling = true;
            $(this).slider('value',Slideval);
        }
        else 
            internalSlideCalling = false;
    }
});

$("#slider").slider('values',valMap);
于 2013-05-15T07:45:08.123 回答
1

然后你可以使用当我们移动滑块时触发的事件,然后设置滑块的值。我们可以手动设置滑块值。

这是事件代码

slide: function( event, ui ) {
            // code
        },




$('#id').slider("value",value); //using this we can set the slider value
于 2013-05-15T07:16:20.703 回答
0

利用

$("#slider").slider({
    step: 50
})

这是更多信息的链接 - http://jqueryui.com/slider/#steps

于 2013-05-15T07:08:16.470 回答