2
好了,一個非常類似的問題在這裏問jQuery UI的滑塊改變和幻燈片事件報告不同的結果
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'設置合適的'global'變量,然後調用處理計算邏輯的函數。 http://jsfiddle.net/AsDZJ/6/ – Sibicle
嗨,我不知道這是否會有幫助,但你有沒有嘗試使用停止事件,並與變化事件交叉結果。我是這樣說的,因爲最終的變化值應該是停止事件值,而不是滑動事件,我想。 – joao