javascript - Jquery ui slider 移动到下一个值

标签 javascript jquery

这是我想要实现的目标的示例图片

enter image description here

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

相反,假设 handle 位于值 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/

最佳答案

我不太了解 slider ,但这里有一个基于您的规范的可行解决方案:

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

这里是完整的代码供引用

    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);

关于javascript - Jquery ui slider 移动到下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558725/

相关文章:

jquery - If 语句在执行 jQuery 之前没有被注册

javascript - css 背景图像随动画变化

javascript - 我怎样才能去掉 <nav> 中 <ul> 的点

javascript - PHP Ajax onkeyup 在我的 Switch 案例网站上不起作用

jquery - 将悬停添加到 .live ('click' ,函数 ()

javascript - 从后端获取 C# const 并在 JS 文件中使用它?

jquery - 可编辑文本框宽度

javascript - 编写硬核 javascript 应用程序的成功途径是什么?

javascript - 在 facebox 中加载 iframe 时显示微调器

javascript - 基本的 AngularJs 无法路由到不同的页面