diff options
author | Felix Nagel <info@felixnagel.com> | 2011-05-23 22:10:58 +0200 |
---|---|---|
committer | Felix Nagel <info@felixnagel.com> | 2011-05-23 22:10:58 +0200 |
commit | 6347f529e85aa1535bf8564f3ab6b7c39117c3f0 (patch) | |
tree | 2ac1dd3cc0916b54b6e94d267df1047593f726e8 /ui/jquery.ui.slider.js | |
parent | d76aeef6de75896cfb147e3aa877a5e555273bc1 (diff) | |
parent | 23f222531d459e0fe38ddb4730ae060073d5d5c0 (diff) | |
download | jquery-ui-6347f529e85aa1535bf8564f3ab6b7c39117c3f0.tar.gz jquery-ui-6347f529e85aa1535bf8564f3ab6b7c39117c3f0.zip |
Merge commit '1.8.13' into selectmenu
Diffstat (limited to 'ui/jquery.ui.slider.js')
-rw-r--r-- | ui/jquery.ui.slider.js | 64 |
1 files changed, 25 insertions, 39 deletions
diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index d90a7940f..ea93c3e1c 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -1,7 +1,7 @@ /* * jQuery UI Slider @VERSION * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -36,7 +36,11 @@ $.widget( "ui.slider", $.ui.mouse, { _create: function() { var self = this, - o = this.options; + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>", + handleCount = ( o.values && o.values.length ) || 1, + handles = []; this._keySliding = false; this._mouseSliding = false; @@ -50,57 +54,35 @@ $.widget( "ui.slider", $.ui.mouse, { " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + - " ui-corner-all" ); - - if ( o.disabled ) { - this.element.addClass( "ui-slider-disabled ui-disabled" ); - } + " ui-corner-all" + + ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); this.range = $([]); if ( o.range ) { if ( o.range === true ) { - this.range = $( "<div></div>" ); if ( !o.values ) { o.values = [ this._valueMin(), this._valueMin() ]; } if ( o.values.length && o.values.length !== 2 ) { o.values = [ o.values[0], o.values[0] ]; } - } else { - this.range = $( "<div></div>" ); } - this.range + this.range = $( "<div></div>" ) .appendTo( this.element ) - .addClass( "ui-slider-range" ); - - if ( o.range === "min" || o.range === "max" ) { - this.range.addClass( "ui-slider-range-" + o.range ); - } - - // note: this isn't the most fittingly semantic framework class for this element, - // but worked best visually with a variety of themes - this.range.addClass( "ui-widget-header" ); - } - - if ( $( ".ui-slider-handle", this.element ).length === 0 ) { - $( "<a href='#'></a>" ) - .appendTo( this.element ) - .addClass( "ui-slider-handle" ); + .addClass( "ui-slider-range" + + // note: this isn't the most fittingly semantic framework class for this element, + // but worked best visually with a variety of themes + " ui-widget-header" + + ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); } - if ( o.values && o.values.length ) { - while ( $(".ui-slider-handle", this.element).length < o.values.length ) { - $( "<a href='#'></a>" ) - .appendTo( this.element ) - .addClass( "ui-slider-handle" ); - } + for ( var i = existingHandles.length; i < handleCount; i += 1 ) { + handles.push( handle ); } - this.handles = $( ".ui-slider-handle", this.element ) - .addClass( "ui-state-default" + - " ui-corner-all" ); + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( self.element ) ); this.handle = this.handles.eq( 0 ); @@ -309,7 +291,9 @@ $.widget( "ui.slider", $.ui.mouse, { ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) }; - this._slide( event, index, normValue ); + if ( !this.handles.hasClass( "ui-state-hover" ) ) { + this._slide( event, index, normValue ); + } this._animateOff = true; return true; }, @@ -464,6 +448,7 @@ $.widget( "ui.slider", $.ui.mouse, { this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, 0 ); + return; } return this._value(); @@ -478,6 +463,7 @@ $.widget( "ui.slider", $.ui.mouse, { this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, index ); + return; } if ( arguments.length ) { @@ -583,14 +569,14 @@ $.widget( "ui.slider", $.ui.mouse, { // returns the step-aligned value that val is closest to, between (inclusive) min and max _trimAlignValue: function( val ) { - if ( val < this._valueMin() ) { + if ( val <= this._valueMin() ) { return this._valueMin(); } - if ( val > this._valueMax() ) { + if ( val >= this._valueMax() ) { return this._valueMax(); } var step = ( this.options.step > 0 ) ? this.options.step : 1, - valModStep = val % step, + valModStep = (val - this._valueMin()) % step; alignValue = val - valModStep; if ( Math.abs(valModStep) * 2 >= step ) { |