This may be oversimplifying things, but you could try something like this:
Working Example
JS
// shows values in the demo
var showAmount = function (event, ui) {
$("#amount").val(ui.value);
$("#amount2").val(parseInt($('.ui-slider-handle').css('left'), 10));
};
$(function () {
$("#slider").slider({
animate: 5000, //slowed down to 5s for demo only, for normal timing set to true
value: 0,
min: 0,
max: 500, // make the max value the same as the width
slide: showAmount,
change: showAmount
});
});
// click to trigger animation to 500
$("#play").click(function () {
$("#slider").slider("value", 500);
});
// click to set the value of the slider to the handles left position
$("#stop").click(function () {
$("#slider").slider('option', "value", parseInt($('.ui-slider-handle').css('left'), 10));
});
CSS
#slider {
width: 500px; /* must match the max value of the slider */
}
This method kind of hinges on being able to set the maximum value of slider to match the width of the slider. If that's not a big problem the left position of the slider's handle will match the value of the slider and you can use that as a stopping value.
Tested and working in IE9/10, Chrome and Firefox.