为什么JQuery不能正确淡化flash对象?

我试图淡出Flash嵌入对象并淡入常规Html。

由于某种原因,淡出方法的回调在淡出完成之前被多次触发。 结果是Html在回调函数中被多次追加,并且闪烁了额外的时间。

当我尝试淡化常规Html时,这不会发生。

fadeoutfunction不适用于flash吗?

HTML:

Hide Flash 

Before Fade

JQuery的:

  $('#HideFlash').click(function() { $('#FlashContainer *').fadeOut('slow', function() { $('#FlashContainer').append("

This is in the flash container

"); $('#FlashContainer p').fadeIn('slow'); }); $('#RegularContent *').fadeOut('slow', function() { $('#RegularContent').append("

This is in the regular content after fade

"); $('#RegularContent p').fadeIn('slow'); }); });

我无法确切地指出问题所在,但我在这里有一个有效的例子: http : //jsbin.com/ayoqe

我想你的jquery选择器中可能是星号*? 看起来好像你试图隐藏容器内的所有内容而不是隐藏容器本身。

 $(document).ready(function(){ $('#RegularContent').hide(); // hide the regular content on load $('#HideFlash').click(function() { $('#FlashContainer').fadeOut('slow'); // fade out the flash container $('#RegularContent').fadeIn('slow'); // fade in the regulare content return false; }); }); Hide Flash 

Before Fade

希望有所帮助,希望我理解正确!

我认为这是因为jQuery不能操纵第三方多媒体对象的不透明度,即使它嵌入到标准HTML标记中。

你最好的选择可能只是将一个看不见的DIV定位在它上面,然后只是淡入/淡出(但这只是纯粹的推测)。

我的解决方案虽然不能完全相同,但是在fadIn()中使用回调函数将对象标签添加到div中。 它确实意味着对象本身没有被褪色,但我想假设您可以将图像添加到div中,然后在fadeIn完成时用目标代码替换图像。

所以我遇到了同样的问题。 将wmode参数更改为“opaque”使其工作。

@dalbaeb答案可能是最好的答案,但奇怪的是它失败了一些丑陋的错误(d在jQuery 1.4中未定义,e在1.5中未定义,看起来像代码块与队列处理有关)。

令人惊讶的是,它适用于jQuery 1.3!