2014-12-24 3 views
0

Я пытаюсь запустить jQuery .clone() для содержимого, которое только что было изменено с помощью .html(). Однако .clone копирует контент до того, как он был изменен. Я хочу клонировать измененный контент. Как мне это сделать?jQuery Cloning Измененное содержимое

Вот мой HTML:

<div id="cloneThis">This text exists before .html() replaces it.</div> 
<div id="cloneHere"></div> 

Вот мои JS:

// This function copies #cloneThis content over to #cloneHere 
function cloneStuff(){ 
    $('#cloneThis').clone().appendTo('#cloneHere'); 
} 

function changeThenClone(){ 
    $("#cloneThis").html("This is new text that should be cloned.", cloneStuff()); 
} 
// When this is run, cloneStuff() clones the old content, not the new content. 
changeThenClone(); 

Вот идентичное codepen демонстрации, если вы хотите увидеть его в действии: http://codepen.io/anon/pen/JoRWMQ

Почему ISN» t .clone() копирование измененного содержимого? Как заставить клонировать измененный контент вместо старого?

+1

Просто используйте просто цепочку: '$ (" # cloneThis "). Html (" Это новый текст, который должен быть клонирован. "). Clone(). AppendTo ('# cloneHere')' – Terry

ответ

2

Вы звоните cloneStuff(), прежде чем фактическая замена HTML выполняется функцией html().

Попробуйте вместо этого:

$("#cloneThis").html("This is new text that should be cloned."); 
cloneStuff(); 

Кроме того, JQuery html() метод принимает только 1 аргумент (новое содержание HTML), см documentation.