2011-12-27 30 views
8

jQueryスライダに目盛りを追加するにはどうすればよいですか? 1から10の値があるとしたら、どのように各値にティックを追加できますか?jQueryスライダに目盛りを追加しますか?

私はS.O.に似た記事を見ました。しかし、それらはすべてプラグインを提案しています。他の要素との多くの対話性のために、ハードコードしたいと思います。

ありがとうございます!

答えて

3

Similar to this SO Question。モルティマーの答えが助けになるかもしれません。

まだ正式な方法はありませんが、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; 幅:2ピクセル; 背景:#fcf8e3; 身長:28px; ポジション:絶対; top:0px; } スタイルを下に表示する場合。これはあなたのコードの改造です。ありがとう。 – blackmambo

9

おかげアリーLivshinとCodeToad。前のコードでは、最小値は常に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

関連する問題