2

ユーザーがトラックを使用してスライドしようとしたときに無効にしたい jQuery UI Slider があります。誰かがハンドルをどこかにドラッグしたときにのみ機能/有効にする必要があります。スライドをクリックしてドラッグしてハンドルを移動しようとする操作は無効にする必要があります。unbindまたはmousedownイベントを使用してこれを実行できるかどうかはわかりません。

私が気付いた問題は、私のハンドルが 1 から 100 になることです。ハンドルの始点を移動すると、ui.value. ただし、ハンドルの外に出てスライダー トラックをスライドしようとすると、 はui.valueその値をリセットします。

だから、ハンドル以外のドラッグを無効にしたい。

4

5 に答える 5

1
  $("#range-amount").slider({ disabled: true });
于 2013-07-06T08:58:59.247 に答える
0

私も同じ問題を抱えていて、jquery ui自体からハンドルを削除することを決定しない限り、解決策を見つけることができませんでした

で、このui.slider.js行にコメントを付けます。

// Bind the click to the slider itself
this.element.bind('mousedown.slider', function(e) {
   self.click.apply(self, [e]);
   self.currentHandle.data("mouse").trigger(e);
   self.firstValue = self.firstValue + 1; //This is for always triggering the change event
});
于 2012-08-13T08:46:21.257 に答える
0

私はこのソリューションを使用してそれを行いました:

jQuery UI Slider - スライダー トラックのクリックを無効にする

function disableSliderTrack($slider){

    $slider.bind("mousedown", function(event){

        return isTouchInSliderHandle($(this), event);   

    });

    $slider.bind("touchstart", function(event){

        return isTouchInSliderHandle($(this), event.originalEvent.touches[0]);

    });
}

function isTouchInSliderHandle($slider, coords){

    var x = coords.pageX;
    var y = coords.pageY;

    var $handle = $slider.find(".ui-slider-handle");

    var left = $handle.offset().left;
    var right = (left + $handle.outerWidth());
    var top = $handle.offset().top;
    var bottom = (top + $handle.outerHeight());

    return (x >= left && x <= right && y >= top && y <= bottom);    
}


disableSliderTrack($(".ui-slider"));
于 2013-07-08T13:06:33.603 に答える
-1

あなたの質問がはっきりしている場合、マウスイベントでスライダーをスライドさせたくない場合、これはうまくいくはずです:

$( "#slider" ).mousedown(function(){return false;}); // For mousedown
$( "#slider" ).scroll(function(){return false;}); // For scrolling with the trackpad

また、jquery イベント リストをチェックアウトし、次のように任意のイベントを置き換えて、このイベントをスライダーから削除します。

$( "#slider" ).someEvent(function(){return false;});

スライダーからすべてのイベントを削除するには、次を試してください。

$('#slider').unbind();
于 2012-04-10T17:11:10.667 に答える