Skip to content

Commit

Permalink
Slider: add handles in single DOM operation. Fixed #7259 - optimize h…
Browse files Browse the repository at this point in the history
…andle creation.

(cherry picked from commit 7fb6ca1)
  • Loading branch information
adambaratz authored and scottgonzalez committed May 11, 2011
1 parent 201b5ed commit 03ce9fb
Showing 1 changed file with 16 additions and 34 deletions.
50 changes: 16 additions & 34 deletions ui/jquery.ui.slider.js
Expand Up @@ -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;
Expand All @@ -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
.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>" )
this.range = $( "<div></div>" )
.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 );

Expand Down

0 comments on commit 03ce9fb

Please sign in to comment.