jQuery replaceWith () проблема - PullRequest
       5

jQuery replaceWith () проблема

0 голосов
/ 04 января 2012

Я пытаюсь сбросить флэш-контент в моем слайдере, работающем на плагине jQuery Cycle.

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

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

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

Все отлично работает, используя обратный вызов "after", предоставляемый 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 из функции для изменения области видимости, но это не главное, я думаю, что первая строка - это проблема, потому что я удаляю что-то, а затем ищу его, поэтому я ничего не получаю вreturn?

Эта функция работает и делает именно то, что мне нужно (но не отображает .flash видео в исходных позициях, и я не могу использовать абсолютное позиционирование):

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

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

Есть идеи?

1 Ответ

2 голосов
/ 04 января 2012

После звонка

FlashContent.replaceWith(FlashContentHolder);

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

FlashContentHolder.replaceWith(FlashContent);
...