2012-02-02 16 views
8

不同我有一個jQuery UI滑塊: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)); 
    } 
}); 

一些奇怪的原因,解除滑塊時(鼠標鬆開)的值從原來的值略有變化。幻燈片事件返回的內容與更改事件不同。任何人有任何想法可能會導致這種情況,我怎麼能解決它?

我將在更改事件(意味着我不能只使用sldie)的回調中執行相當激烈的操作,但還需要顯示活動滑塊的值,因此我無法使用只是一個或另一個。

下面是這個怪異的動作小提琴:http://jsfiddle.net/5W6Zh/

在此先感謝

+1

看起來,當你抓住/滑動滑塊一樣,它需要從按鈕的中心價值,但是當你放手吧,它取左邊的值。此外,只需點擊軌道從不產生這種效果,所以我傾向於認爲按鈕背後的代碼使用不同的參考點拖/釋放 – sottenad 2012-02-02 23:32:21

回答

12

我們今晚(和昨晚以及過去幾個月)遇到了這個問題。我們所做的修正是使用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演示,直到我發現這種差異。

0

您的最小值,最大值和步長值看起來有點怪異,但我猜你只是得到了他們混在一起。

我發現滑塊不適用於小於1的步驟,所以我改爲只使用整數,然後再進行分割。從那以後從未有過任何問題。

+1

我已經更改爲上述值,我不幸仍然得到這個怪異。 :/ – wyqydsyq 2012-02-02 23:08:30

2

在幻燈片處理程序中使用ui.value以獲得更準確的值。

13

我找到了解決方案!總是這樣做在幻燈片事件:

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

,你是好去

+1

就是這樣!我愛你,夥計! – 2013-09-02 00:50:59

+0

我的滑塊只返回'[object Object]'。 – nipponese 2014-05-20 03:45:17

+2

完美!因爲這個,我今天晚上在我的桌子上敲了一下我的頭......我知道它遲了一年,但是@nipponese,你得到了[[object object]],因爲它是一個範圍滑塊,試試:'$(this).slider ('values',ui.values [0]);' – kingkode 2015-07-01 19:55:45