Permalink
Browse files

Slider: Create clone of options.values during _create(). Fixed #8892 …

…- Multiple Sliders have Conflict with options.values.
  • Loading branch information...
dominicbarnes authored and scottgonzalez committed Dec 6, 2012
1 parent 9cbd4b4 commit 209443d716587d896ffcdf26c0fd8c8a23437b3c
Showing with 31 additions and 5 deletions.
  1. +28 −3 tests/unit/slider/slider_options.js
  2. +3 −2 ui/jquery.ui.slider.js
@@ -143,8 +143,33 @@ test("step", function() {
// ok(false, "missing test - untested code is broken code.");
//});
-//test("values", function() {
-// ok(false, "missing test - untested code is broken code.");
-//});
+test("values", function() {
+ 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);
View
@@ -62,9 +62,10 @@ $.widget( "ui.slider", $.ui.mouse, {
if ( o.range === true ) {
if ( !o.values ) {
o.values = [ this._valueMin(), this._valueMin() ];
- }
- if ( o.values.length && o.values.length !== 2 ) {
+ } else if ( o.values.length && o.values.length !== 2 ) {
o.values = [ o.values[0], o.values[0] ];
+ } else if ( $.isArray( o.values ) ) {
+ o.values = o.values.slice(0);
}
}

0 comments on commit 209443d

Please sign in to comment.