0

我正在尝试在由 jQuery Cycle Plugin 提供支持的滑块中重置 Flash 内容。

我想做的事:

  • 用空 div 替换之前“.slide”中的每个“.flash”,
  • 用以前的 .flash 数据替换创建的空 div。

我知道这听起来很愚蠢,但这是一种重置工作 Flash 内容的好方法,最好的替代方法(删除和附加)会导致很多样式问题,而且我不想使用任何 swfobject.js 和其他 API。当然隐藏也不是一种选择。

使用 Cycle Plugin 提供的“after”回调一切正常,但不知何故我无法检索原始的 .flash 内容,我的回调函数的最后一行只是什么都不做,并且 .flash 被永久替换为空 div:

jQuery("#slider").cycle({
  after: callbackAfter,
});

function callbackAfter(){
   var FlashContent = jQuery(this).prev('.slide').find('.flash'); //find any flash content in previous slide
   var FlashContentHolder = jQuery("<div></div>"); //place empty div instead
   FlashContent.replaceWith(FlashContentHolder ); //replace the flash content with empty div
   FlashContent.replaceWith(FlashContent); //This doesn't work - replace the empty div with stored flash content
}

问题是最后一行不显示原始 FlashContent。

我试图从函数中设置 FlashContent 和 FlashContentHolder 变量以更改范围,但这不是重点,我想第一行是问题所在,因为我正在删除一些东西然后搜索它,所以我什么也没得到返回?

此功能可以正常工作并且完全符合我的需要(但不会在原始位置显示 .flash 视频,而且我不能使用绝对定位):

function callbackAfter(){
   var stopFlash = jQuery(this).prev('div').find('.flash').remove();
   jQuery(this).prev('div').append(stopFlash); 
}

这实际上适用于小问题(见上文)。

有任何想法吗?

4

1 回答 1

2

打电话后

FlashContent.replaceWith(FlashContentHolder);

FlashContent 不再存在于 DOM 树中,因此您无法将其替换为其他任何内容。您可能希望将最后一行更改为:

FlashContentHolder.replaceWith(FlashContent);
于 2012-01-04T19:44:24.120 回答