2014-10-03 125 views
0

我需要一个滑块来让用户选择一个重量。JQuery UI非线性滑块

$("#slider").slider({ 
    value: 15, 
    slide: function(event, ui) { 
     $('#weight').text(ui.value); 
    } 
}); 

但值应该是非线性的:这意味着对于从10到50的值(增加1的步骤)的“正常”行为。然后例如:如果值变大,则它们应该以10为增量递增。如果用户选择较低的值,则应该更精确:值3至10(增加步长0.5),低于3 - >增加步骤0.1。

我尝试将使用自己的阵列中的数据:

myData = [ 0.4, 0.45, 0.5, 0.55, 0.65, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 6, 7, 8, 9, 10,11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30, 40, 50, 60, 70 ]; 
$("#slider").slider({ 
    min: 0, 
    max: myData.length - 1, 
    step: 1, 
    slide: function(event, ui) { 
     $('#weight').text(ui.value); 
    }, 
    create: function() { 
       $(this).slider('values',0,0); 
       $(this).slider('values',1,myData.length - 1); 
    } 
}); 

但是,这是行不通的。有更聪明的解决方案吗?

回答

1
myData = [ 0.4, 0.45, 0.5, 0.55, 0.65, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 6, 7, 8, 9, 10,11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30, 40, 50, 60, 70 ]; 
$("#slider").slider({ 
    min: 0, 
    max: myData.length - 1, 
    step: 1, 
    slide: function(event, ui) { 
     $('#weight).text(myData[ui.value]); 
    } 
});