jQuery UI Slider - значение, возвращаемое из события «slide» при выпуске, отличается от значения «change» - PullRequest
9 голосов
/ 03 февраля 2012

У меня есть ползунок jQuery UI:

$('div.slider').slider({
    range: true,
    step: 250,
    min: 1000,
    max: 500000,
    values: [1000,500000],
    change: function(event, ui){
        console.log($(this).slider('values', 0)+','+$(this).slider('values', 1));
    },
    slide: function(event, ui){
        console.log($(this).slider('values', 0)+','+$(this).slider('values', 1));
    }
});

По какой-то странной причине при отпускании ползунка (mouseup) значение немного меняется от того, что было.Событие слайда возвращает нечто иное, чем событие изменения.У кого-нибудь есть идеи, что может быть причиной этого и как я могу это решить?

У меня будет довольно интенсивная операция в обратном вызове для события change (то есть я не могу просто использовать sldie),но также необходимо показать значения ползунка в реальном времени, поэтому я не могу использовать только одно или другое.

Вот скрипка с этой странностью в действии: http://jsfiddle.net/5W6Zh/

Спасибо взаранее

Ответы [ 4 ]

13 голосов
/ 07 сентября 2012

Я нашел решение!ВСЕГДА делайте это на слайде:

$(this).slider('value', ui.value);

И вы готовы идти

13 голосов
/ 17 августа 2012

мы столкнулись с этим сегодня вечером (и прошлой ночью, и в течение последних нескольких месяцев). Чтобы исправить это, мы использовали ui.value и ui.values ​​[0] вместо $ ("# slider"). Slider ('values', 0).

Используйте это:

change: function(event, ui) {
  $('.values').text(ui.values[0] + ',' + ui.values[1]);
}

Вместо:

change: function(event, ui) {
  $('.values').text($(this).slider('values', 0) + ',' + $(this).slider('values', 1));
}

Я раздвоил твой jsfiddle и заставил его работать: http://jsfiddle.net/danhixon/9JdhU/1/

Честно говоря, я не думаю, что нашел бы решение без вашего вопроса и jsfiddle - я продолжал сравнивать его с демонстрацией jquery-ui, пока не обнаружил эту разницу.

2 голосов
/ 26 февраля 2012

Используйте ui.value в обработчике слайдов, чтобы получить более точное значение.

0 голосов
/ 03 февраля 2012

Ваши значения min, max и step выглядят немного странно, но я думаю, вы просто перепутали их.

Я обнаружил, что ползунок не слишком хорошо работает с шагами, намного меньшими, чем 1, поэтомуЯ изменил, чтобы использовать только целые числа и делить потом.С тех пор никогда не было проблем.

...