Skip to main content

Search and Top Navigation

#7123 open bug ()

Opened March 16, 2011 05:05PM UTC

Last modified January 25, 2013 09:23PM UTC

Not all effects are .stop() able or :animated detectable

Reported by: gnarf Owned by:
Priority: minor Milestone: none
Component: ui.effects.core Version: 1.8.10
Keywords: Cc:
Blocked by: Blocking:
Description

Since some animations are handled by animating other elements, I think that we could potentially do something like this:

 el.data('ec.currentAnimations', $animatedStuff); 

That way we can punch

 .stop() 
to also look for this data key and call stop on children animations, as well as hooking
 :animated 
selector to do the same...

Attachments (0)
Change History (9)

Changed March 16, 2011 05:08PM UTC by gnarf comment:1

Changed March 28, 2011 06:25PM UTC by gnarf comment:2

status: newopen

Changed June 14, 2011 09:53PM UTC by gnarf comment:3

milestone: 1.91.next

Changed August 07, 2011 07:52AM UTC by mikesherov comment:4

_comment0: I just noticed this issue when I wanted to do some accordion-style effects with "fold". Indeed a .stop(), or even a .stop(true, true) is insufficient in case an effect is animating other elements. In case of fold() the wrapper is involved. \ \ So I am using the following workaround which "works for me" in the case of hiding/showing with "fold" and also works well if some non-animatid hides/showes are involved as well:: \ \ \ $.fn.stopcompletely = function() { \ // stop an animation comletely. \ // Why we need this? - stop should be enough, but because we \ // are using the composite animations predefined by jquery-ui, \ // stop() does not completely stop them and some deferred part continues. \ // This workaround attempts to put an "end to all". \ return this.each(function() { \ var el = $(this); \ if (el.parent().is( ".ui-effects-wrapper" )) { \ el.parent() \ .stop(true, true) \ .replaceWith(el); \ } \ el.stop(true, true); \ }); \ }; \ \ Obviously the real solution not this, but as as the ticket suggests, I am just giving this comment because my workaround may be useful for others until this issue is solved properly. \ 1350523622649947

I just noticed this issue when I wanted to do some accordion-style effects with "fold". Indeed a .stop(), or even a .stop(true, true) is insufficient in case an effect is animating other elements. In case of fold() the wrapper is involved.

So I am using the following workaround which "works for me" in the case of hiding/showing with "fold" and also works well if some non-animatid hides/showes are involved as well::

    $.fn.stopcompletely = function() {
        // stop an animation comletely.
        // Why we need this? - stop should be enough, but because we
        // are using the composite animations predefined by jquery-ui,
        // stop() does not completely stop them and some deferred part continues.
        // This workaround attempts to put an "end to all".
        return this.each(function() {
            var el = $(this);
            if (el.parent().is( ".ui-effects-wrapper" )) {
                el.parent()
                    .stop(true, true)
                    .replaceWith(el);
            }
            el.stop(true, true);
        });
    };

Obviously the real solution not this, but as as the ticket suggests, I am just giving this comment because my workaround may be useful for others until this issue is solved properly.

Changed October 03, 2012 05:03PM UTC by scottgonzalez comment:5

milestone: 1.next1.10.0

Changed October 18, 2012 01:38AM UTC by mikesherov comment:6

keywords: → usecssclip

Still reproducible using latest: http://jsfiddle.net/CtETg/3/

Changed October 18, 2012 01:39AM UTC by mikesherov comment:7

This problem goes away if we get rid of wrapper animations, and use css clip animations instead.

Changed November 07, 2012 06:25PM UTC by mikesherov comment:8

keywords: usecssclip

Changed January 25, 2013 09:23PM UTC by tj.vantoll comment:9

milestone: 1.10.0none