9

我有一个 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)时,该值与原来的值略有不同。幻灯片事件返回的内容与更改事件不同。任何人都有任何想法可能导致这种情况以及我如何解决它?

我将在更改事件的回调中进行非常激烈的操作(这意味着我不能只使用 sldie),但还需要实时显示滑块的值,所以我不能只使用一个或其他。

这是一个关于这种奇怪行为的小提琴:http: //jsfiddle.net/5W6Zh/

提前致谢

4

4 回答 4

13

我们今晚(昨晚和过去几个月)遇到了这个问题。我们修复它的方法是使用 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 演示进行比较,直到我发现这种差异。

于 2012-08-17T09:44:48.670 回答
13

我找到了解决办法!总是在幻灯片事件中这样做:

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

你可以走了

于 2012-09-07T12:39:16.617 回答
2

在幻灯片处理程序中使用 ui.value 以获得更准确的值。

于 2012-02-26T17:47:17.150 回答
0

你的最小值、最大值和步长值看起来有点奇怪,但我猜你只是把它们弄混了。

我发现滑块在步数远小于 1 的情况下效果不佳,因此我改为仅使用整数,然后除以。从那以后再也没有任何问题。

于 2012-02-02T22:52:45.583 回答