0

jQueryCyclePluginを搭載したスライダー内のフラッシュコンテンツをリセットしようとしています。

私がやりたいこと:

  • 前の「.slide」のすべての「.flash」を空のdivに置き換えます。
  • 作成した空の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 に答える