]> source.dussan.org Git - jquery-ui.git/commitdiff
Effects: General Code Cleanup
authorgnarf <gnarf@gnarf.net>
Fri, 4 Mar 2011 23:10:02 +0000 (17:10 -0600)
committergnarf <gnarf@gnarf.net>
Fri, 4 Mar 2011 23:10:02 +0000 (17:10 -0600)
ui/jquery.effects.blind.js
ui/jquery.effects.bounce.js

index 4ebba4071ca90c3121106c8736ec864c77522386..0bf5b0b719931c650cf8c7ef69fb44d9429349b2 100644 (file)
 $.effects.blind = function(o) {
 
        return this.queue(function() {
-
                // Create element
                var el = $(this), 
                        props = ['position','top','bottom','left','right'],
                        mode = $.effects.setMode( el, o.mode || 'hide' ),
                        direction = o.direction || 'vertical',
                        ref = (direction == 'vertical') ? 'height' : 'width',
-                       wrapper, distance; // Default direction
+                       animation = {},
+                       wrapper, distance;
 
                // Adjust
                $.effects.save(el, props); el.show(); // Save & Show
+               
                wrapper = $.effects.createWrapper(el).css({overflow:'hidden'}); // Create Wrapper
-               distance = wrapper[ direction == 'vertical' ? "height" : "width" ]();
-               if(mode == 'show') wrapper.css(ref, 0); // Shift
 
-               // Animation
-               var animation = {};
-               animation[ref] = mode == 'show' ? distance : 0;
+               animation[ref] = ( mode == 'show' ? wrapper[ ref ]() : 0 );
+               (mode == 'show' && wrapper.css(ref, 0)); // start at 0 if we are showing
 
                // Animate
-               wrapper.animate(animation, o.duration, o.easing, function() {
-                       if(mode == 'hide') el.hide(); // Hide
+               wrapper.animate( animation, o.duration, o.easing, function() {
+                       (mode == 'hide' && el.hide()); // Hide
                        $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
-                       if(o.complete) o.complete.apply(el[0], arguments); // Callback
+                       (o.complete && o.complete.apply(el[0], arguments)); // Callback
                        el.dequeue();
                });
 
index 188c2809ff74a98c32b5219f0f006bba4ebbb92f..dde99481b836ad2c35a42bc7f9d63f353b721ede 100644 (file)
@@ -12,6 +12,8 @@
  */
 (function( $, undefined ) {
 
+var rshowhide = /show|hide/;
+
 $.effects.bounce = function(o) {
 
        return this.queue(function() {
@@ -19,56 +21,63 @@ $.effects.bounce = function(o) {
                // Create element
                var el = $( this ), 
                        props = [ 'position', 'top', 'bottom', 'left', 'right' ],
+                       // defaults:
                        mode = $.effects.setMode( el, o.mode || 'effect' ),
-                       direction = o.direction || 'up', // Default direction
-                       distance = o.distance || 20, // Default distance
-                       times = o.times || 5, // Default # of times
-                       speed = o.duration || 250; // Default speed per bounce
-               if (/show|hide/.test(mode)) props.push('opacity'); // Avoid touching opacity to prevent clearType and PNG issues in IE
+                       direction = o.direction || 'up', 
+                       distance = o.distance || 20,
+                       times = o.times || 5, 
+                       speed = (o.duration || 250),
+                       // utility:
+                       ref = ( direction == 'up' || direction == 'down' ) ? 'top' : 'left',
+                       motion = ( direction == 'up' || direction == 'left' ), // true is positive
+                       distance = o.distance || false;
+               
+               // Avoid touching opacity to prevent clearType and PNG issues in IE     
+               if ( rshowhide.test(mode) ) props.push('opacity'); 
 
-               // Adjust
                $.effects.save(el, props); el.show(); // Save & Show
                $.effects.createWrapper(el); // Create Wrapper
-               var ref = (direction == 'up' || direction == 'down') ? 'top' : 'left';
-               var motion = (direction == 'up' || direction == 'left') ? 'pos' : 'neg';
-               var distance = o.distance || (ref == 'top' ? el.outerHeight({margin:true}) / 3 : el.outerWidth({margin:true}) / 3);
-               if (mode == 'show') el.css('opacity', 0).css(ref, motion == 'pos' ? -distance : distance); // Shift
+
+               if ( !distance ) {
+                       distance = el[ref == 'top' ? 'outerHeight' : 'outerWidth' ]( { margin:true } ) / 3;
+               }
+               if (mode == 'show') el.css('opacity', 0).css(ref, motion ? -distance : distance ); // Shift
                if (mode == 'hide') distance = distance / (times * 2);
                if (mode != 'hide') times--;
 
                // Animate
                if (mode == 'show') { // Show Bounce
-                       var animation = {opacity: 1};
-                       animation[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
-                       el.animate(animation, speed / 2, o.easing);
+                       var animation = { opacity: 1 };
+                       animation[ref] = (motion ? '+=' : '-=') + distance;
+                       el.animate( animation, speed / 2, o.easing);
                        distance = distance / 2;
                        times--;
                };
                for (var i = 0; i < times; i++) { // Bounces
                        var animation1 = {}, animation2 = {};
-                       animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
-                       animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
-                       el.animate(animation1, speed / 2, o.easing).animate(animation2, speed / 2, o.easing);
+                       animation1[ref] = (motion ? '-=' : '+=') + distance;
+                       animation2[ref] = (motion ? '+=' : '-=') + distance;
+                       el.animate( animation1, speed / 2, o.easing ).animate( animation2, speed / 2, o.easing );
                        distance = (mode == 'hide') ? distance * 2 : distance / 2;
                };
                if (mode == 'hide') { // Last Bounce
-                       var animation = {opacity: 0};
-                       animation[ref] = (motion == 'pos' ? '-=' : '+=')  + distance;
-                       el.animate(animation, speed / 2, o.easing, function(){
+                       var animation = { opacity: 0 };
+                       animation[ref] = (motion ? '-=' : '+=') + distance;
+                       el.animate( animation, speed / 2, o.easing, function(){
                                el.hide(); // Hide
-                               $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
-                               if(o.complete) o.complete.apply(this, arguments); // Callback
+                               $.effects.restore( el, props ); $.effects.removeWrapper( el ); // Restore
+                               if ( o.complete ) o.complete.apply( this, arguments ); // Callback
                        });
                } else {
                        var animation1 = {}, animation2 = {};
-                       animation1[ref] = (motion == 'pos' ? '-=' : '+=') + distance;
-                       animation2[ref] = (motion == 'pos' ? '+=' : '-=') + distance;
+                       animation1[ref] = (motion ? '-=' : '+=') + distance;
+                       animation2[ref] = (motion ? '+=' : '-=') + distance;
                        el.animate(animation1, speed / 2, o.easing).animate(animation2, speed / 2, o.easing, function(){
                                $.effects.restore(el, props); $.effects.removeWrapper(el); // Restore
                                if(o.complete) o.complete.apply(this, arguments); // Callback
                        });
                };
-               el.queue('fx', function() { el.dequeue(); });
+               el.queue('fx', function(next) { next(); });
                el.dequeue();
        });