MCPcopy Index your code
hub / github.com/JsAaron/jQuery / doAnimation

Function doAnimation

1.7/effects.js:134–249  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

132 prop = jQuery.extend( {}, prop );
133
134 function doAnimation() {
135 // XXX 'this' does not always have a nodeName when running the
136 // test suite
137
138 if ( optall.queue === false ) {
139 jQuery._mark( this );
140 }
141
142 var opt = jQuery.extend( {}, optall ),
143 isElement = this.nodeType === 1,
144 hidden = isElement && jQuery(this).is(":hidden"),
145 name, val, p, e,
146 parts, start, end, unit,
147 method;
148
149 // will store per property easing and be used to determine when an animation is complete
150 opt.animatedProperties = {};
151
152 for ( p in prop ) {
153
154 // property name normalization
155 name = jQuery.camelCase( p );
156 if ( p !== name ) {
157 prop[ name ] = prop[ p ];
158 delete prop[ p ];
159 }
160
161 val = prop[ name ];
162
163 // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
164 if ( jQuery.isArray( val ) ) {
165 opt.animatedProperties[ name ] = val[ 1 ];
166 val = prop[ name ] = val[ 0 ];
167 } else {
168 opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
169 }
170
171 if ( val === "hide" && hidden || val === "show" && !hidden ) {
172 return opt.complete.call( this );
173 }
174
175 if ( isElement && ( name === "height" || name === "width" ) ) {
176 // Make sure that nothing sneaks out
177 // Record all 3 overflow attributes because IE does not
178 // change the overflow attribute when overflowX and
179 // overflowY are set to the same value
180 opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
181
182 // Set display property to inline-block for height/width
183 // animations on inline elements that are having width/height animated
184 if ( jQuery.css( this, "display" ) === "inline" &&
185 jQuery.css( this, "float" ) === "none" ) {
186
187 // inline-level elements accept inline-block;
188 // block-level elements need to be inline with layout
189 if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
190 this.style.display = "inline-block";
191

Callers

nothing calls this directly

Calls 2

jQueryFunction · 0.70
defaultDisplayFunction · 0.70

Tested by

no test coverage detected