Ладно, очень похожий вопрос был здесь спросилJQuery UI Slider изменения и слайд-события сообщают различные результаты
jQuery UI Slider - Value returned from 'slide' event on release is different from 'change' value
Но ответ был неудовлетворительным, на мой взгляд. Вот мой код JavaScript: http://jsfiddle.net/AsDZJ/4/
function slideVal() {
var number = $("#number_slider").slider("value");
$("#number_field").append('Slide: ' + number + '<br/>');
}
function changeVal() {
var number = $("#number_slider").slider("value");
$("#number_field").append('Change: ' + number + '<br/>');
}
$(function() {
$("#number_slider").slider({
min: 1,
max: 10,
change: changeVal,
slide: slideVal
});
$("#number_slider").slider("value", 5);
});
Вопрос заключается в том, что ползунок докладывает разные значения при вызове изменения обработчика, и когда слайд обработчик вызывается.
Теперь другой вопрос указывает на то, что если вы объявляете функцию анонимно, вы можете просто использовать ui.value, например, так:
$("#number_slider").slider({
min: 1,
max: 10,
change: function(event, ui) {
$("#number_field").append('Change: ' + ui.value + '<br/>');
}
});
Это даст более достоверные результаты, но также означает, что если, как и в моем случае, у меня есть много сложной логики для выполнения всякого события, когда меняются события, я должен повторить код. Кроме того, вычисления включают значения ползунка из нескольких ползунков.
Как получить доступ к правильному значению из явно объявленной функции? Является ли это поведение в jQuery UI ошибкой?
Благодаря
Ну, вот одно решение. Мне кажется, что это довольно глупо, возможно, кто-то может дать лучший ответ. Я установил некоторые переменные, доступные для обеих областей. Внутри функции анонимного обработчика событий я сначала установил соответствующую «глобальную» переменную с помощью 'ui.value', затем вызовет функцию, которая обрабатывает логику вычислений. http://jsfiddle.net/AsDZJ/6/ – Sibicle
Привет, я не знаю, поможет ли это, но вы попробуете использовать событие остановки и перекрестите результаты с событием изменения. Я говорю это, потому что окончательное значение в изменении должно быть значением события остановки, а не событием слайда, я думаю. – joao