Slider: Create clone of options.values during _create(). Fixed #8892 - Multiple Sliders have Conflict with options.values.

This commit is contained in:
Dominic Barnes 2012-12-06 16:11:23 -06:00 committed by Scott González
parent 9cbd4b4222
commit 209443d716
2 changed files with 31 additions and 5 deletions

View File

@ -143,8 +143,33 @@ test("step", function() {
// ok(false, "missing test - untested code is broken code."); // ok(false, "missing test - untested code is broken code.");
//}); //});
//test("values", function() { test("values", function() {
// ok(false, "missing test - untested code is broken code."); expect( 2 );
//});
// testing multiple ranges on the same page, the object reference to the values
// property is preserved via multiple range elements, so updating options.values
// of 1 slider updates options.values of all the others
var ranges = $([
document.createElement("div"),
document.createElement("div")
]).slider({
range: true,
values: [ 25, 75 ]
});
notStrictEqual(
ranges.eq(0).data("uiSlider").options.values,
ranges.eq(1).data("uiSlider").options.values,
"multiple range sliders should not have a reference to the same options.values array"
);
ranges.eq(0).slider("values", 0, 10);
notEqual(
ranges.eq(0).slider("values", 0),
ranges.eq(1).slider("values", 0),
"the values for multiple sliders should be different"
);
});
})(jQuery); })(jQuery);

View File

@ -62,9 +62,10 @@ $.widget( "ui.slider", $.ui.mouse, {
if ( o.range === true ) { if ( o.range === true ) {
if ( !o.values ) { if ( !o.values ) {
o.values = [ this._valueMin(), this._valueMin() ]; o.values = [ this._valueMin(), this._valueMin() ];
} } else if ( o.values.length && o.values.length !== 2 ) {
if ( o.values.length && o.values.length !== 2 ) {
o.values = [ o.values[0], o.values[0] ]; o.values = [ o.values[0], o.values[0] ];
} else if ( $.isArray( o.values ) ) {
o.values = o.values.slice(0);
} }
} }