Ползунки на самом деле находятся на расстоянии 40 (максимум), проблема заключается в том, что ваши минутные / секундные вычисления основаны на использовании исходных ui
значений, переданных в функцию, даже если вы установите новое значение:
slide: function(event, ui) {
if ((ui.values[1]-ui.values[0]) > 40) {
var index = $(ui.handle).index();
if (index === 1) {
// You're setting a new slider position here, but ui.values[1] still contains the old position
$('#slider').slider('values', 1, ui.values[0]+40);
} else if (index === 2) {
$('#slider').slider('values', 0, ui.values[1]-40);
}
}
// your calculations use the original ui values
}
Вам также необходимо обновить ui.values
:
if ((ui.values[1]-ui.values[0]) > 40) {
var index = $(ui.handle).index();
if (index === 1) {
ui.values[1] = ui.values[0] + 40;
$('#slider').slider('values', 1, ui.values[1]);
} else if (index === 2) {
ui.values[0] = ui.values[1] - 40;
$('#slider').slider('values', 0, ui.values[0]);
}
}
http://jsfiddle.net/wyc3P/8/