2011-12-27 114 views
8

如何將刻度線添加到jQuery滑塊?假設我有從1到10的值,我如何在每個值上添加一個勾號?爲jQuery滑塊添加刻度線?

我在S.O.上看到過類似的帖子。但他們都建議使用插件,並且由於與其他元素的交互性很強,我想對其進行硬編碼。

謝謝!

回答

3

Similar to this SO Question。 Mortimer的答案可能會有所幫助。

雖然目前還沒有官方的方式,但它可以很好地讓它在jQuery UI滑塊中烘焙。

+2

@DonnyP:Mando特別提醒你注意Mortimer的答案,而不是Bijan的 – silvamerica

+0

啊謝謝你們:) –

0

您可以使用在正確位置有標記的背景圖像 - 這可能是最簡單的方法。

+0

滑塊的範圍是動態的,所以使用背景圖片將不起作用。不過謝謝。我懷疑有CSS解決方案 –

3

這裏是一個簡單的解決方案假設滑塊間隔= 1

function setSliderTicks(){ 
    var $slider = $('#slider'); 
    var max = $slider.slider("option", "max");  
    var spacing = $slider.width()/(max -1); 

    $slider.find('.ui-slider-tick-mark').remove(); 
     for (var i = 0; i < max ; i++) { 
      $('<span class="ui-slider-tick-mark"></span>').css('left', (spacing * i) + 'px').appendTo($slider);      
     } 
} 


.ui-slider-tick-mark{ 
display:inline-block; 
width:2px; 
background:black; 
height:16px; 
position:absolute; 
top:-4px; 
} 
10

由於代碼蟾蜍。我修改你的代碼百分比而不是像素的工作,所以現在是免疫改變窗口大小:

的Javascript:

function setSliderTicks(){ 
    var $slider = $('#slider'); 
    var max = $slider.slider("option", "max");  
    var spacing = 100/(max -1); 

    $slider.find('.ui-slider-tick-mark').remove(); 
    for (var i = 0; i < max ; i++) { 
     $('<span class="ui-slider-tick-mark"></span>').css('left', (spacing * i) + '%').appendTo($slider); 
    } 
} 

CSS:

.ui-slider-tick-mark{ 
    display:inline-block; 
    width:2px; 
    background:black; 
    height:16px; 
    position:absolute; 
    top:-4px; 
} 
+0

.ui-slider-tick-mark { display:inline-block; width:2px; 背景:#fcf8e3; height:28px; position:absolute; top:0px; } 如果您希望樣式出現在底部。這是你的代碼的一個mod。謝謝。 – blackmambo

9

感謝阿里Livshin和CodeToad。前面的代碼假設min值始終爲1.我編輯代碼以使用最小值。

$("#users-slider").slider(
    { 
    range: "min", 
    value: 3, 
    min: 3, 
    max: 6, 
    create: function(event, ui) { 
     setSliderTicks(event.target); 
    }, 
    } 
); 

function setSliderTicks(el) { 
    var $slider = $(el); 
    var max = $slider.slider("option", "max");  
    var min = $slider.slider("option", "min");  
    var spacing = 100/(max - min); 

    $slider.find('.ui-slider-tick-mark').remove(); 
    for (var i = 0; i < max-min ; i++) { 
     $('<span class="ui-slider-tick-mark"></span>').css('left', (spacing * i) + '%').appendTo($slider); 
    } 
} 
+0

您可能需要將循環從i = 1開始。這讓我看起來更好看 – harshit