2012-01-04 3 views
0

Я пытаюсь сбросить содержимое флэш-памяти в своем слайдере, на котором работает jQuery Cycle Plugin.jQuery replaceWith() problem

Что я хочу сделать:

  • заменить все ".flash" в предыдущем ".slide" с пустой DIV,
  • заменить созданный пустой DIV с предыдущими данными .flash.

Я знаю, это звучит глупо, но это удивительный способ сброса рабочего содержимого флэша, лучшая альтернатива (удаление и добавление) вызывает много вопросов моделирования, и я не хочу использовать любой swfobject.js и другие API. Конечно, скрывать тоже не вариант.

Все работает отлично, используя обратный вызов «после», предоставляемый Cycle Plugin, но каким-то образом я не могу получить исходный .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); 
} 

Это на самом деле работает с небольшим вопросом (см. выше).

Любые идеи?

+0

Вашей замену содержимого вашего хранящий вспышки в 'FlashContent' с пустым DIV при вызове' FlashContent.replaceWith (FlashContentHolder) ' –

ответ

2

После вызова

FlashContent.replaceWith(FlashContentHolder); 

FlashContent не существует в дереве DOM больше, так что вы не можете заменить его на что-нибудь еще. Вы, вероятно, хотите изменить свою последнюю строку:

FlashContentHolder.replaceWith(FlashContent); 
+0

Иногда я чувствую себя, как полный идиот :) Вы были правы, спасибо товарищу! – Wordpressor

+1

@Wordpressor Добро пожаловать! :) – Paulpro