JQueryUI Slider - 3个标签

时间:2014-09-19 20:39:09

标签: javascript jquery css jquery-ui

我正在开发一个项目,要求用户从-10< => 10中选择隐藏值

我喜欢JQueryUI小部件的外观和功能,如果......我可以使用增量滑块。我可以放置3个标签。

OptionA ..................中性..................... OptionB

它们是一个结构良好的JSFiddle,它为每个增量点格式化了数字或刻度。我真的很想让它如上图所示。

http://jsfiddle.net/9y501okz/

$("#slider").slider({
    value: 4,
    min: 1,
    max: 7,
    step: 1
})
    .each(function () {
        //
        // Add labels to slider whose values 
        // are specified by min, max and whose
        // step is set to 1
        //
        // Get the options for this slider
        var opt = $(this).data().uiSlider.options;
        // Get the number of possible values
        var vals = opt.max - opt.min;
        // Space out values
        for (var i = 0; i <= vals; i++) {
            var el = $('<label>' + (i + 1) + '</label>').css('left', (i / vals * 100) + '%');
            $("#slider").append(el);
        }
    });

#slider label {
    position: absolute;
    width: 20px;
    margin-left: -10px;
    text-align: center;
    margin-top: 20px;
}

/* below is not necessary, just for style */
#slider {
    width: 50%;
    margin: 2em auto;
}

谢谢。

1 个答案:

答案 0 :(得分:0)

您的示例很容易编辑,以达到您想要的效果。

更改滑块初始化以使用以下选项:

$( "#slider" ).slider({
    value: 2,
    min: 1,
    max: 3,
    step: 1
})

您可以通过在循环中添加一个简单的开关来编辑您的标签:

for (var i = 0; i <= vals; i++) {
  var text = "";
  switch (i) {
      case 0:
          text = "OptionA";
          break;
      case 1:
          text = "Neutral";
          break;
      case 2:
          text = "OptionB";
          break;
  }
  var el = $('<label>'+text+'</label>').css('left',(i/vals*100)+'%');

  $( "#slider" ).append(el);

}

示例here