benbarnett / jquery-animate-enhanced

Extend $.animate() to detect CSS transitions for Webkit, Mozilla, IE>=10 and Opera and convert animations automatically.
http://playground.benbarnett.net/jquery-animate-enhanced/
MIT License
1.39k stars 196 forks source link

issue using delay() #61

Closed okstaticzero closed 10 years ago

okstaticzero commented 12 years ago

I'm using version v0.85 and delay doesn't seem to be working. Using this syntax: $(this).delay(500).animate({top:'50px'})

technotarek commented 12 years ago

Bump. Using v0.89 and have tried it with both jQuery 1.6.1 and 1.6.4.

technotarek commented 12 years ago

Here's a surprise--delay() works fine in IE9. My first comment above (re v0.89) apparently applies to Chrome, FF, and Safari.

gefangenimnetz commented 12 years ago

Any insights into this? I also have the problem. delay() does not work for me.

technotarek commented 12 years ago

I'm using a work around for now. I saw somewhere else that there is a separate, delay-like plugin that does the same thing as delay(), but works with animate-enhanced. That sounded heavy to me. I took a different (potentially silly) approach: I have jQuery show/hide a 1x1 transparent gif and set the duration to my desired delay time, then use the callback to move forward with the animation. Just a temporary measure until the real delay() bug is fixed.

gefangenimnetz commented 12 years ago

I just switched to :http://ricostacruz.com/jquery.transit/ // https://github.com/rstacruz/jquery.transit

technotarek commented 12 years ago

Wow, that is nice. The biggest downside seems to be lack of support for IE9. For me, IE is still (unfortunately) about 50% of users. How do you plan to handle that? Are you going to sniff the user agent and enable the animate fallback, or just ignore IE altogether?

gefangenimnetz commented 12 years ago

You can easily fall back to animate():

// Delegate .transition() calls to .animate()
// if the browser can't do CSS transitions.
if (!$.support.transition) {
    $.fn.transition = $.fn.animate;
}
CaptainN commented 12 years ago

I had the same problem. I ended up using some class vars for a globally accessible queue system and some closures to hold my function and iterated elements, and setTimeout - but it's be nicer to just use delay. Still these are way faster on iOS - and the workaround only took 10 minutes. :-)

KingScooty commented 12 years ago

Bump. Would love delay to work for this script.

KingRial commented 12 years ago

Downgrading to version 0.73 will restore the .delay() (but you get all the other problems plus some incompatibilities with jquery 1.7.2)

If you wish to give it a try: https://github.com/benbarnett/jQuery-Animate-Enhanced/tree/6b4424c944ecd784856c08012390fe068932e879

codeofsumit commented 11 years ago

@technotarek IE9 works because IE9 doesn't support CSS3 animations, hence the regular jQuery animation is used. Browser with CSS3 animation support however ignore delay(). I'm using jQuery 1.10 with 1.0 of this plugin. Delay() is completely ignored in modern browsers (that have css3 animation support). Any roadmap for a fix? Otherwise i need to find another plugin.

adamlr commented 11 years ago

I'm in a similar position, would really love .delay to work here:

$(".icon").each(function(i) { $(this).delay((i + 0.5) * 300).fadeIn(500); });

I may resort to the transparent gif approach above, though seems a bit hacky, or http://ricostacruz.com/jquery.transit/, but would love to use animate enhanced instead.

codeofsumit commented 11 years ago

meanwhile, i switched to anima which has it's custom delay function. Works very well https://github.com/minimit/minimit-anima

adamlr commented 11 years ago

Great, I think I will try this. I basically need a plugin that will use hardware accelerated animation for opacity on mobile devices whilst falling back to .animate() on older desktop browsers - and critically that works with .delay()

benbarnett commented 10 years ago

Happy for someone to pick this up but I would recommend another plugin for this for now