Haradzieniec
Haradzieniec

Reputation: 9340

jQuery: easier way to use .clone() than described below?

If you execute in the console on this page

var cloned = $(".question").clone(true);
$(".question").addClass("first");
var clonedStr = cloned[0].outerHTML || new XMLSerializer().serializeToString(cloned[0]);
$(".question").after(clonedStr);

you will clone the question (there will be two questions on the page, but the first one will be with the .first class). That's what is needed.

Is there any simpler way to do this with jQuery? I'm confused of the third string in the code above and believe it could be simpler. Any ideas? Thank you.

Upvotes: 3

Views: 53

Answers (2)

Ionică Bizău
Ionică Bizău

Reputation: 113365

If you don't use the HTML as string, then don't get it. Just use the jQuery object:

var cloned = $(".question").clone(true);
$(".question").addClass("first").after(cloned);

Also, you can do it one line:

$(".question").after($(".question").clone(true)).first().addClass("first");

Upvotes: 4

Rory McCrossan
Rory McCrossan

Reputation: 337560

You could use insertAfter to insert the cloned element after changing the class. You don't need to convert the element in the jQuery object to a string, you can use that object within the function itself:

var $question = $('.question');
var $cloned = $question.clone(true).insertAfter($question);
$question.addClass('first');

Upvotes: 2

Related Questions