Skip to content

Commit

Permalink
Effects.core: Check Visibility vs 'hide' and 'show' modes, finish imm…
Browse files Browse the repository at this point in the history
…ediately if neccessary - Fixes #6715 - Hide and Show try to affect hidden and showing elements
  • Loading branch information
gnarf committed Jun 23, 2011
1 parent a89ff40 commit d18cd7e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
12 changes: 12 additions & 0 deletions tests/unit/effects/effects_core.js
Expand Up @@ -19,6 +19,18 @@ var minDuration = 15,

module( "effects.core" );

test( "Immediate Return Conditions", function() {
var hidden = $( "div.hidden" ),
count = 0;
expect( 6 );
hidden.hide( "blind", function() {
equal( ++count, 1, "Hide on hidden returned immediately" );
}).show().show( "blind", function() {
equal( ++count, 2, "Show on shown returned immediately" );
});
equal( ++count, 3, "Both Functions worked properly" );
});

$.each( $.effects.effect, function( effect ) {
if ( effect === "transfer" ) {
return;
Expand Down
15 changes: 11 additions & 4 deletions ui/jquery.effects.core.js
Expand Up @@ -556,19 +556,26 @@ $.fn.extend({
}

function run( next ) {
var elem = this,
complete = args.complete;
var elem = $( this ),
complete = args.complete,
mode = args.mode;

function done() {
if ( $.isFunction( complete ) ) {
complete.call( elem );
complete.call( elem[0] );
}
if ( $.isFunction( next ) ) {
next();
}
}

effectMethod.call( elem, args, done );
// if the element is hiddden and mode is hide,
// or element is visible and mode is show
if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
done();
} else {
effectMethod.call( elem[0], args, done );
}
}

// TODO: remove this check in 2.0, effectMethod will always be true
Expand Down

0 comments on commit d18cd7e

Please sign in to comment.