Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery滑块如何将句柄锁定到位?_Jquery_Slider_Handle_Slide - Fatal编程技术网

jQuery滑块如何将句柄锁定到位?

jQuery滑块如何将句柄锁定到位?,jquery,slider,handle,slide,Jquery,Slider,Handle,Slide,我有一个带有两个句柄的jQuery滑块。我希望根据第二个手柄将第一个锁定到位 我尝试检查滑动事件上的值,然后将第一个控制柄设置回其锁定位置,但它基本上忽略了我设置的值,并继续滑动 我已经让它与停止活动一起工作,但它非常笨重 我正在使用从服务器端生成的JSON对象来填充我的滑块。这是我的停止事件代码: $(clientID).slider({ range: true, max: slider.max, values: [slider.minVa

我有一个带有两个句柄的jQuery滑块。我希望根据第二个手柄将第一个锁定到位

我尝试检查滑动事件上的值,然后将第一个控制柄设置回其锁定位置,但它基本上忽略了我设置的值,并继续滑动

我已经让它与停止活动一起工作,但它非常笨重

我正在使用从服务器端生成的JSON对象来填充我的滑块。这是我的停止事件代码:

   $(clientID).slider({
        range: true,
        max: slider.max,
        values: [slider.minVal, slider.maxVal],
        change: afterSliderChanged,
        stop: onSliderStop
    });

    function onSliderStop(event, ui) {
    for (i in sliders.sliders) {
        var slider = sliders.sliders[i];
        var clientID = slider.cellType + "_" + slider.objectID + "_null";

        if (this.id == clientID) {
            if (ui.values[0].toString() == slider.max.toString()) {
                var values = $(this).slider('option', 'values');
                $(this).slider('option', 'values', [parseInt(slider.max - 1), parseInt(values[1])]);
            }
        }
    }
有人有什么想法吗

如果我需要详细说明,请告诉我

谢谢!
丹尼尔·布鲁尔(Daniel Brewer)

下面是一个快速而肮脏的示例,说明了如何相对于正在拖动的句柄锁定另一个句柄:

var offset = 40;
$('#slider').slider({
    range: true,
    max: 600,
    values: [40, 80],
    slide: function(e,ui){
        if (ui.value == ui.values[0]) {
            $(this).slider('values',1, ui.value+offset);
        } else {
            $(this).slider('values',0, ui.value-offset);
        }
    }
});
应该能帮你弄清楚如何做你想做的事


工作示例:

这里是@PetersenDidit的jsfiddle的一个稍微不太快的n-dirty版本,它将句柄相互锁定,并在滑块的末端夹住它们之间的偏移量,因此范围不能在
maxOff
以下折叠。关键是
return false
,以防止jquery ui应用当前拖动值:

var max = 600;
var maxOff = 40;

$('#slider').slider({
    range: true,
    max: max,
    values: [40, 80],
    slide: function(e,ui){
        if (ui.value == ui.values[0]) {
            $(this).slider( 'values', 1, ui.value+maxOff);
            if (ui.value >= max - maxOff) {
                $(this).slider( 'values', 0, max - maxOff);
                return false;
            }
        } else {
            $(this).slider( 'values',0, ui.value-maxOff);
            if (ui.value <= maxOff) {
                $(this).slider( 'values', 1, maxOff);
                return false;
            }
        }
    }
});
var max=600;
var-maxOff=40;
$(“#滑块”)。滑块({
范围:对,
马克斯:马克斯,
值:[40,80],
幻灯片:功能(e、ui){
if(ui.value==ui.values[0]){
$(此).slider('values',1,ui.value+maxOff);
如果(ui.value>=max-maxOff){
$(此).slider('values',0,max-maxOff);
返回false;
}
}否则{
$(此).slider('values',0,ui.value maxOff);
if(ui.value)