jQuery UI Slider - Value returned from 'slide' event on release is different from 'change' value

前端 未结 4 2012
小蘑菇
小蘑菇 2020-12-19 04:27

I have a jQuery UI slider:

$(\'div.slider\').slider({
    range: true,
    step: 250,
    min: 1000,
    max: 500000,
    values: [1000,500000],
    change:          


        
相关标签:
4条回答
  • 2020-12-19 04:43

    I found a solution! ALWAYS do this on a slide event:

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

    And you're good to go

    0 讨论(0)
  • 2020-12-19 04:52

    we ran into this tonight (and last night, and for the past few months). What we did to fix it was use ui.value and ui.values[0] instead of $("#slider").slider('values',0).

    Use this:

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

    Instead of:

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

    I forked your jsfiddle and made it work: http://jsfiddle.net/danhixon/9JdhU/1/

    Honestly I don't think I would have found the solution without your question and jsfiddle - I kept comparing it to the jquery-ui demo until I found this difference.

    0 讨论(0)
  • 2020-12-19 04:52

    Your min, max and step values look a bit weird, but I guess you just got them mixed up.

    I found that the slider doesn't work too well with steps much smaller than 1, so I changed to use integers only and divide afterwards. Never had any problems since then.

    0 讨论(0)
  • 2020-12-19 04:59

    Use ui.value in the slide handler to get a more accurate value.

    0 讨论(0)
提交回复
热议问题