From: Richard D. Worth Date: Sat, 3 Apr 2010 03:14:44 +0000 (-0400) Subject: slider: jslint cleanup (thanks for the start zhaoz) and style changes to meet http... X-Git-Tag: 1.8.1~5^2~37 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=87ba795467ee447eb2ab7d95ada42de097c7946f;p=jquery-ui.git slider: jslint cleanup (thanks for the start zhaoz) and style changes to meet http://docs.jquery.com/JQuery_Core_Style_Guidelines --- diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index 7f891bae8..440e75635 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -13,28 +13,32 @@ * jquery.ui.widget.js */ -(function($) { +(function( $ ) { // number of pages in a slider // (how many times can you page up/down to go through the whole range) var numPages = 5; -$.widget("ui.slider", $.ui.mouse, { +$.widget( "ui.slider", $.ui.mouse, { + widgetEventPrefix: "slide", + options: { animate: false, distance: 0, max: 100, min: 0, - orientation: 'horizontal', + orientation: "horizontal", range: false, step: 1, value: 0, values: null }, + _create: function() { + var self = this, + o = this.options; - var self = this, o = this.options; this._keySliding = false; this._mouseSliding = false; this._animateOff = true; @@ -43,200 +47,218 @@ $.widget("ui.slider", $.ui.mouse, { this._mouseInit(); this.element - .addClass("ui-slider" - + " ui-slider-" + this.orientation - + " ui-widget" - + " ui-widget-content" - + " ui-corner-all"); + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ); - if (o.disabled) { - this.element.addClass('ui-slider-disabled ui-disabled'); + if ( o.disabled ) { + this.element.addClass( "ui-slider-disabled ui-disabled" ); } this.range = $([]); - if (o.range) { - - if (o.range === true) { - this.range = $('
'); - 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]]; + if ( o.range ) { + if ( o.range === true ) { + this.range = $( "
" ); + 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 = $('
'); + this.range = $( "
" ); } this.range - .appendTo(this.element) - .addClass("ui-slider-range"); + .appendTo( this.element ) + .addClass( "ui-slider-range" ); - if (o.range == "min" || o.range == "max") { - this.range.addClass("ui-slider-range-" + o.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"); - + this.range.addClass( "ui-widget-header" ); } - if ($(".ui-slider-handle", this.element).length == 0) - $('') - .appendTo(this.element) - .addClass("ui-slider-handle"); + if ( $( ".ui-slider-handle", this.element ).length === 0 ) { + $( "" ) + .appendTo( this.element ) + .addClass( "ui-slider-handle" ); + } - if (o.values && o.values.length) { - while ($(".ui-slider-handle", this.element).length < o.values.length) - $('') - .appendTo(this.element) - .addClass("ui-slider-handle"); + if ( o.values && o.values.length ) { + while ( $(".ui-slider-handle", this.element).length < o.values.length ) { + $( "" ) + .appendTo( this.element ) + .addClass( "ui-slider-handle" ); + } } - this.handles = $(".ui-slider-handle", this.element) - .addClass("ui-state-default" - + " ui-corner-all"); + this.handles = $( ".ui-slider-handle", this.element ) + .addClass( "ui-state-default" + + " ui-corner-all" ); - this.handle = this.handles.eq(0); + this.handle = this.handles.eq( 0 ); - this.handles.add(this.range).filter("a") - .click(function(event) { + this.handles.add( this.range ).filter( "a" ) + .click(function( event ) { event.preventDefault(); }) .hover(function() { - if (!o.disabled) { - $(this).addClass('ui-state-hover'); + if ( !o.disabled ) { + $( this ).addClass( "ui-state-hover" ); } }, function() { - $(this).removeClass('ui-state-hover'); + $( this ).removeClass( "ui-state-hover" ); }) .focus(function() { - if (!o.disabled) { - $(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus'); + if ( !o.disabled ) { + $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); + $( this ).addClass( "ui-state-focus" ); } else { - $(this).blur(); + $( this ).blur(); } }) .blur(function() { - $(this).removeClass('ui-state-focus'); + $( this ).removeClass( "ui-state-focus" ); }); - this.handles.each(function(i) { - $(this).data("index.ui-slider-handle", i); + this.handles.each(function( i ) { + $( this ).data( "index.ui-slider-handle", i ); }); - this.handles.keydown(function(event) { - - var ret = true; - - var index = $(this).data("index.ui-slider-handle"); - - if (self.options.disabled) - return; - - switch (event.keyCode) { - case $.ui.keyCode.HOME: - case $.ui.keyCode.END: - case $.ui.keyCode.PAGE_UP: - case $.ui.keyCode.PAGE_DOWN: - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - ret = false; - if (!self._keySliding) { - self._keySliding = true; - $(this).addClass("ui-state-active"); - var allowed = self._start(event, index); - if (allowed === false) { + this.handles + .keydown(function( event ) { + var ret = true, + index = $( this ).data( "index.ui-slider-handle" ), + allowed, + curVal, + newVal, + step; + + if ( self.options.disabled ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + ret = false; + if ( !self._keySliding ) { + self._keySliding = true; + $( this ).addClass( "ui-state-active" ); + allowed = self._start( event, index ); + if ( allowed === false ) { + return; + } + } + break; + } + + step = self.options.step; + if ( self.options.values && self.options.values.length ) { + curVal = newVal = self.values( index ); + } else { + curVal = newVal = self.value(); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + newVal = self._valueMin(); + break; + case $.ui.keyCode.END: + newVal = self._valueMax(); + break; + case $.ui.keyCode.PAGE_UP: + newVal = curVal + ( (self._valueMax() - self._valueMin()) / numPages ); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = curVal - ( (self._valueMax() - self._valueMin()) / numPages ); + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + if ( curVal === self._valueMax() ) { return; } - } - break; - } - - var curVal, newVal, step = self.options.step; - if (self.options.values && self.options.values.length) { - curVal = newVal = self.values(index); - } else { - curVal = newVal = self.value(); - } - - switch (event.keyCode) { - case $.ui.keyCode.HOME: - newVal = self._valueMin(); - break; - case $.ui.keyCode.END: - newVal = self._valueMax(); - break; - case $.ui.keyCode.PAGE_UP: - newVal = curVal + ((self._valueMax() - self._valueMin()) / numPages); - break; - case $.ui.keyCode.PAGE_DOWN: - newVal = curVal - ((self._valueMax() - self._valueMin()) / numPages); - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - if(curVal == self._valueMax()) return; - newVal = curVal + step; - break; - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - if(curVal == self._valueMin()) return; - newVal = curVal - step; - break; - } - - self._slide(event, index, newVal); - - return ret; - - }).keyup(function(event) { - - var index = $(this).data("index.ui-slider-handle"); - - if (self._keySliding) { - self._keySliding = false; - self._stop(event, index); - self._change(event, index); - $(this).removeClass("ui-state-active"); - } - - }); + newVal = curVal + step; + break; + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + if ( curVal === self._valueMin() ) { + return; + } + newVal = curVal - step; + break; + } + + self._slide( event, index, newVal ); + + return ret; + + }) + .keyup(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ); + + if ( self._keySliding ) { + self._keySliding = false; + self._stop( event, index ); + self._change( event, index ); + $( this ).removeClass( "ui-state-active" ); + } + + }); this._refreshValue(); this._animateOff = false; - }, destroy: function() { - this.handles.remove(); this.range.remove(); this.element - .removeClass("ui-slider" - + " ui-slider-horizontal" - + " ui-slider-vertical" - + " ui-slider-disabled" - + " ui-widget" - + " ui-widget-content" - + " ui-corner-all") - .removeData("slider") - .unbind(".slider"); + .removeClass( "ui-slider" + + " ui-slider-horizontal" + + " ui-slider-vertical" + + " ui-slider-disabled" + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ) + .removeData( "slider" ) + .unbind( ".slider" ); this._mouseDestroy(); return this; }, - _mouseCapture: function(event) { - - var o = this.options; - - if (o.disabled) + _mouseCapture: function( event ) { + var o = this.options, + position, + normValue, + distance, + closestHandle, + self, + index, + allowed, + offset, + mouseOverHandle; + + if ( o.disabled ) { return false; + } this.elementSize = { width: this.element.outerWidth(), @@ -244,16 +266,15 @@ $.widget("ui.slider", $.ui.mouse, { }; this.elementOffset = this.element.offset(); - var position = { x: event.pageX, y: event.pageY }; - var normValue = this._normValueFromMouse(position); - - var distance = this._valueMax() - this._valueMin() + 1, closestHandle; - var self = this, index; - this.handles.each(function(i) { - var thisDistance = Math.abs(normValue - self.values(i)); - if (distance > thisDistance) { + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + self = this; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - self.values(i) ); + if ( distance > thisDistance ) { distance = thisDistance; - closestHandle = $(this); + closestHandle = $( this ); index = i; } }); @@ -261,12 +282,13 @@ $.widget("ui.slider", $.ui.mouse, { // workaround for bug #3736 (if both handles of a range are at 0, // the first is always used as the one with least distance, // and moving it is obviously prevented by preventing negative ranges) - if(o.range == true && this.values(1) == o.min) { - closestHandle = $(this.handles[++index]); + if( o.range === true && this.values(1) === o.min ) { + index += 1; + closestHandle = $( this.handles[index] ); } - var allowed = this._start(event, index); - if (allowed === false) { + allowed = this._start( event, index ); + if ( allowed === false ) { return false; } this._mouseSliding = true; @@ -274,198 +296,204 @@ $.widget("ui.slider", $.ui.mouse, { self._handleIndex = index; closestHandle - .addClass("ui-state-active") + .addClass( "ui-state-active" ) .focus(); - var offset = closestHandle.offset(); - var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle'); + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { - left: event.pageX - offset.left - (closestHandle.width() / 2), - top: event.pageY - offset.top - - (closestHandle.height() / 2) - - (parseInt(closestHandle.css('borderTopWidth'),10) || 0) - - (parseInt(closestHandle.css('borderBottomWidth'),10) || 0) - + (parseInt(closestHandle.css('marginTop'),10) || 0) + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) }; - normValue = this._normValueFromMouse(position); - this._slide(event, index, normValue); + normValue = this._normValueFromMouse( position ); + this._slide( event, index, normValue ); this._animateOff = true; return true; - }, - _mouseStart: function(event) { + _mouseStart: function( event ) { return true; }, - _mouseDrag: function(event) { - - var position = { x: event.pageX, y: event.pageY }; - var normValue = this._normValueFromMouse(position); + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); - this._slide(event, this._handleIndex, normValue); + this._slide( event, this._handleIndex, normValue ); return false; - }, - _mouseStop: function(event) { - - this.handles.removeClass("ui-state-active"); + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); this._mouseSliding = false; - this._stop(event, this._handleIndex); - this._change(event, this._handleIndex); + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + this._handleIndex = null; this._clickOffset = null; - this._animateOff = false; - return false; + return false; }, _detectOrientation: function() { - this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal'; + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; }, - _normValueFromMouse: function(position) { + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; - var pixelTotal, pixelMouse; - if ('horizontal' == this.orientation) { + if ( this.orientation === "horizontal" ) { pixelTotal = this.elementSize.width; - pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0); + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); } else { pixelTotal = this.elementSize.height; - pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0); + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); } - var percentMouse = (pixelMouse / pixelTotal); - if (percentMouse > 1) percentMouse = 1; - if (percentMouse < 0) percentMouse = 0; - if ('vertical' == this.orientation) + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { percentMouse = 1 - percentMouse; + } - var valueTotal = this._valueMax() - this._valueMin(), - valueMouse = this._valueMin() + percentMouse * valueTotal; + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; - return this._trimAlignValue(valueMouse); + return this._trimAlignValue( valueMouse ); }, - _start: function(event, index) { + _start: function( event, index ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - return this._trigger("start", event, uiHash); + return this._trigger( "start", event, uiHash ); }, - _slide: function(event, index, newVal) { + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; - var handle = this.handles[index]; + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); - if (this.options.values && this.options.values.length) { - - var otherVal = this.values(index ? 0 : 1); - - if ((this.options.values.length == 2 && this.options.range === true) && - ((index == 0 && newVal > otherVal) || (index == 1 && newVal < otherVal))){ - newVal = otherVal; + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; } - if (newVal != this.values(index)) { - var newValues = this.values(); - newValues[index] = newVal; + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; // A slide can be canceled by returning false from the slide callback - var allowed = this._trigger("slide", event, { - handle: this.handles[index], + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], value: newVal, values: newValues - }); - var otherVal = this.values(index ? 0 : 1); - if (allowed !== false) { - this.values(index, newVal, true); + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); } } - } else { - - if (newVal != this.value()) { + if ( newVal !== this.value() ) { // A slide can be canceled by returning false from the slide callback - var allowed = this._trigger("slide", event, { - handle: this.handles[index], + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], value: newVal - }); - if (allowed !== false) { - this.value(newVal); + } ); + if ( allowed !== false ) { + this.value( newVal ); } - } - } - }, - _stop: function(event, index) { + _stop: function( event, index ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - this._trigger("stop", event, uiHash); + + this._trigger( "stop", event, uiHash ); }, - _change: function(event, index) { - if (!this._keySliding && !this._mouseSliding) { + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - this._trigger("change", event, uiHash); + + this._trigger( "change", event, uiHash ); } }, - value: function(newValue) { - - if (arguments.length) { - this.options.value = this._trimAlignValue(newValue); + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); - this._change(null, 0); + this._change( null, 0 ); } return this._value(); - }, - values: function(index, newValue) { + values: function( index, newValue ) { + var vals, + newValues, + i; - if (arguments.length > 1) { - this.options.values[index] = this._trimAlignValue(newValue); + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); - this._change(null, index); + this._change( null, index ); } - if (arguments.length) { - if ($.isArray(arguments[0])) { - var vals = this.options.values, newValues = arguments[0]; - for (var i = 0, l = vals.length; i < l; i++) { - vals[i] = this._trimAlignValue(newValues[i]); - this._change(null, i); + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); } this._refreshValue(); } else { - if (this.options.values && this.options.values.length) { - return this._values(index); + if ( this.options.values && this.options.values.length ) { + return this._values( index ); } else { return this.value(); } @@ -473,108 +501,107 @@ $.widget("ui.slider", $.ui.mouse, { } else { return this._values(); } - }, - _setOption: function(key, value) { - + _setOption: function( key, value ) { var i, valsLength = 0; - if ( jQuery.isArray(this.options.values) ) { + + if ( $.isArray( this.options.values ) ) { valsLength = this.options.values.length; - }; + } - $.Widget.prototype._setOption.apply(this, arguments); + $.Widget.prototype._setOption.apply( this, arguments ); - switch (key) { - case 'disabled': - if (value) { - this.handles.filter(".ui-state-focus").blur(); - this.handles.removeClass("ui-state-hover"); - this.handles.attr("disabled", "disabled"); - this.element.addClass("ui-disabled"); + switch ( key ) { + case "disabled": + if ( value ) { + this.handles.filter( ".ui-state-focus" ).blur(); + this.handles.removeClass( "ui-state-hover" ); + this.handles.attr( "disabled", "disabled" ); + this.element.addClass( "ui-disabled" ); } else { - this.handles.removeAttr("disabled"); - this.element.removeClass("ui-disabled"); + this.handles.removeAttr( "disabled" ); + this.element.removeClass( "ui-disabled" ); } - case 'orientation': - + break; + case "orientation": this._detectOrientation(); - this.element - .removeClass("ui-slider-horizontal ui-slider-vertical") - .addClass("ui-slider-" + this.orientation); + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); this._refreshValue(); break; - case 'value': + case "value": this._animateOff = true; this._refreshValue(); - this._change(null, 0); + this._change( null, 0 ); this._animateOff = false; break; - case 'values': + case "values": this._animateOff = true; this._refreshValue(); - for (i = 0; i < valsLength; i++) { - this._change(null, i); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); } this._animateOff = false; break; } - }, + //internal value getter + // _value() returns value trimmed by min and max, aligned by step _value: function() { - //internal value getter - // _value() returns value trimmed by min and max, aligned by step var val = this.options.value; - val = this._trimAlignValue(val); + val = this._trimAlignValue( val ); return val; }, - _values: function(index) { - //internal values getter - // _values() returns array of values trimmed by min and max - // _values(index) returns single value trimmed by min and max + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; - if (arguments.length) { - var val = this.options.values[index]; - val = this._trimAlignValue(val); + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); return val; } else { // .slice() creates a copy of the array // this copy gets trimmed by min and max and then returned - var vals = this.options.values.slice(); - for (var i = 0, l = vals.length; i < l; i++) { - vals[i] = this._trimAlignValue(vals[i]); + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); } return vals; } - }, // returns the step-aligned value that val is closest to, between (inclusive) min and max - _trimAlignValue: function(val) { - if (val < this._valueMin()) { + _trimAlignValue: function( val ) { + if ( val < this._valueMin() ) { return this._valueMin(); } - if (val > this._valueMax()) { + if ( val > this._valueMax() ) { return this._valueMax(); } var step = this.options.step, valModStep = val % step, alignValue = val - valModStep; - if (valModStep >= (step / 2)) { + if ( valModStep >= ( step / 2 ) ) { alignValue += step; } // Since JavaScript has problems with large floats, round // the final value to 5 digits after the decimal point (see #4124) - return parseFloat(alignValue.toFixed(5)); + return parseFloat( alignValue.toFixed(5) ); }, _valueMin: function() { @@ -586,49 +613,70 @@ $.widget("ui.slider", $.ui.mouse, { }, _refreshValue: function() { - - var oRange = this.options.range, o = this.options, self = this; - var animate = (!this._animateOff) ? o.animate : false; - - if (this.options.values && this.options.values.length) { - var vp0, vp1; - this.handles.each(function(i, j) { - var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100; - var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%'; - $(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate); - if (self.options.range === true) { - if (self.orientation == 'horizontal') { - (i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate); - (i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate }); + var oRange = this.options.range, + o = this.options, + self = this, + animate = ( !this._animateOff ) ? o.animate : false, + valPercent, + _set = {}, + lastValPercent, + value, + valueMin, + valueMax; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i, j ) { + valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax() - self._valueMin() ) * 100; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( self.options.range === true ) { + if ( self.orientation === "horizontal" ) { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } else { - (i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate); - (i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate }); + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } } lastValPercent = valPercent; }); } else { - var value = this.value(), - valueMin = this._valueMin(), - valueMax = this._valueMax(), - valPercent = valueMax != valueMin - ? (value - valueMin) / (valueMax - valueMin) * 100 - : 0; - var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%'; - this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate); - - (oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate); - (oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate }); - (oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate); - (oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate }); + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } - } - + }); -$.extend($.ui.slider, { +$.extend( $.ui.slider, { version: "@VERSION" }); -})(jQuery); +}(jQuery));