0

问题:我正在使用一个使用非常大的值(范围 0-140,000;步数 20,000)的 jQuery UI 滑块,并且我已经修改了 Stack Overflow 上其他地方的解决方案以向滑块添加标签。但是,该代码(见下文)为 140,000 范围内的每个数字添加了一个标签。是否有 .each() 方法的替代方法,它只会为每个 x 元素添加一个标签(我试图每 20,000 个值获取一个标签)?或者有人可以推荐一种更智能的方法来解决这个问题吗?

Javascript

$( "#slider" ).slider({
    range: "min",
    value: 0,
    min: 0,
    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);

  }

});
4

1 回答 1

0

您应该在滑块选项中定义您的实际范围:

$("#slider").slider({
    range: "min",
    value: 0,
    min: 0,
    max: 140000,
    step: 20000
})

然后使用该step选项作为循环中的增量:

for (var i = 0; i <= vals; i += opt.step) {...}

这是一个演示小提琴

结果代码:

$("#slider").slider({
    range: "min",
    value: 0,
    min: 0,
    max: 140000,
    step: 20000
}).each(function () {
    //
    // Add labels to slider 
    //

    // 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 += opt.step) {
        var el = $('<label>' + i + '</label>').css('left', (i / vals * 100) + '%');
        $("#slider").append(el);
    }
});
于 2013-10-29T05:04:05.257 回答