8

クエリ/スライダーでスライダーを作成し、cssでスタイルを設定しました。(http://jsfiddle.net/9qwmX/

選択した値をdivコンテナに入れることに成功しました。しかし今、私はコンテナがそれに応じてスライダーで「移動」することを望みます。ui.handleパーセンテージであるとそのcssleftプロパティを使用しようとしました。ただし、動作はやや奇妙です。スライダーの左側で移動する場合と、10pxのオフセットで移動する場合があります。

質問:スライド値を含むボックスをハンドルと一緒に移動させる良い方法を知っている人はいますか?

4

3 に答える 3

12

ハンドルに追加できるツールチップのような div を添付するだけで、ハンドルが一緒に移動します。次のように、CSS で配置するだけです。

JS

var initialValue = 2012; // initial slider value
var sliderTooltip = function(event, ui) {
    var curValue = ui.value || initialValue; // current value (when sliding) or initial value (at start)
    var tooltip = '<div class="tooltip"><div class="tooltip-inner">' + curValue + '</div><div class="tooltip-arrow"></div></div>';

    $('.ui-slider-handle').html(tooltip); //attach tooltip to the slider handle
}

$("#slider").slider({
    value: initialValue,
    min: 1955,
    max: 2015,
    step: 1,
    create: sliderTooltip,
    slide: sliderTooltip
});

Twitter ブートストラップ フレームワークから借用したCSSツールチップ

.tooltip {
    position: absolute;
    z-index: 1020;
    display: block;
    padding: 5px;
    font-size: 11px;
    visibility: visible;
    margin-top: -2px;
    bottom:120%;
    margin-left: -2em;
}

.tooltip .tooltip-arrow {
    bottom: 0;
    left: 50%;
    margin-left: -5px;
    border-top: 5px solid #000000;
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    position: absolute;
    width: 0;
    height: 0;
}

.tooltip-inner {
    max-width: 200px;
    padding: 3px 8px;
    color: #ffffff;
    text-align: center;
    text-decoration: none;
    background-color: #000000;
    -webkit-border-radius: 4px;
       -moz-border-radius: 4px;
            border-radius: 4px;
}

デモ: http://jsfiddle.net/9qwmX/2/

于 2012-06-19T14:33:21.593 に答える
1

あなたはあなたが望むものを構築するためにこのようなことをすることができます、私は使用していますevent.pageX

var newLeft = 100;
$('#move').text(100).css('margin-left',115);
$("#slider").slider(
{
            value:100,
            min: 0,
            max: 500,
            step: 50,
            slide: function( event, ui ) {
                $( "#slider-value" ).html( ui.value );
                var  pos = (event.pageX > newLeft)? event.pageX + 8 
                                                  : event.pageX - 42;
                newLeft = event.pageX;                
                $('#move').text(ui.value).css('margin-left',pos);
            }
}
);

デモ: http://jsfiddle.net/joycse06/Cw6u8/1/

于 2012-06-19T11:43:22.990 に答える
0

これが私がやった方法です。開始するには:

「ハンドル」位置を利用します。

var offset = $('.ui-slider-handle .ui-state-default .ui-corner-all"').offset();
var offsetLeft = offset.left;
var offestTop = offset.top;

スライド値ボックスを絶対配置で配置します。

#tijdlijnDatum { position: absolute; }

slideそして、イベントでそれを使って何かをしてください:

$( "#slider" ).slider({
   slide: function(event, ui) { 

       $('#tijdlijnDatum').css({ left: offsetLeft + 'px'  }); // etc
   }
});
于 2012-06-19T11:27:21.827 に答える