我有一个带有两个句柄的jQuery滑块。我希望根据第二个手柄锁定第一个。
我已经尝试检查幻灯片事件上的值,然后将第一个句柄设置回它的锁定位置,但它基本上忽略了我设置它并继续滑动的内容。
我已经让它与 stop 事件合作,但它非常笨重。
我正在使用从服务器端生成的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])]);
}
}
}
有人有什么想法吗?
如果我需要详细说明,请告诉我。
谢谢! 丹尼尔布鲁尔
答案 0 :(得分:1)
这是一个快速而又脏的示例,说明如何锁定与被拖动的句柄相关的其他句柄:
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);
}
}
});
应该帮助你弄清楚如何做你想做的事。
答案 1 :(得分:0)
这里是@ 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;
}
}
}
});