jQuery UI 带有多个范围背景错误的滑块

jQuery UI Slider with multiple range background bug

我正在尝试创建具有 2 个范围的滑块并向背景添加一些颜色,最大值 100 就可以了(第 9 行):

$(function () {
    // the code belows assume the colors array is exactly one element bigger than the handlers array.
    var handlers = [20, 40, 60, 80];
    var colors = ["#ff0000", "#00ff00", "#0000ff", "#00ffff", "#00A3A3"];
    updateColors(handlers);

    $("#slider").slider({
        min: 0,
        max: 100,         // change to 95 causes problems
        values: handlers,
        slide: function (evt, ui) {
          for(var i = 0, l = ui.values.length; i < l; i++){
            if(i !== l-1 && ui.values[i] > ui.values[i + 1]){
              return false;
            }
            else if(i === 0 && ui.values[i] < ui.values[i - 1]){
              return false;
            }
          }
         updateColors(ui.values);
        }
    });

    function updateColors(values) {
        var colorstops = colors[0] + ", "; // start left with the first color
            for (var i=0; i< values.length; i++) {
                colorstops += colors[i] + " " + values[i] + "%,";
                colorstops += colors[i+1] + " " + values[i] + "%,";
            }
            // end with the last color to the right
            colorstops += colors[colors.length-1];

            /* Safari 5.1, Chrome 10+ */
            var css = '-webkit-linear-gradient(left,' + colorstops + ')';
            $('#slider').css('background-image', css);
    }
});

从max:100改成max:95后出现问题:http://jsfiddle.net/LLfWd/623/

终于,我做到了...

  1. 我们需要忘记附加渐变或新的 div。从您的代码中删除它。
  2. 在小部件初始化时,我们需要将新的 class 添加到我们的块中(参见第 9 行)。
  3. 通过 css (before/after) 使用新 class.
  4. 中的句柄做一些魔术

http://jsfiddle.net/LLfWd/624/$(this).addClass("ui-slider-multiple");