2015-01-27 2 views
3

Если выполнить в консоли на этой страницеjQuery: более простой способ использования .clone(), чем описано ниже?

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

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

Есть ли более простой способ сделать это с помощью jQuery? Я смущен третьей строкой в ​​коде выше и считаю, что это может быть проще. Есть идеи? Спасибо.

ответ

4

Если вы не используете HTML как строку, то не получите Это. Просто используйте объект JQuery:

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

Кроме того, вы можете сделать это на одну строку:

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

@Rort McCrossan: спасибо Rort McCrossan и Ionică Bizau для обоих ответов. Почему вы удалили ответ? Это лучше, чем короче? – Haradzieniec

+1

@Haradzieniec Я просто что-то проверял, я думал, что мой ответ неверен, но он отлично работает. Моя линия длиннее, поскольку я кэширую селектор '.question' –

+0

@Rory McCrossan благодарю вас за пробную версию и ваше дальнейшее объяснение! – Haradzieniec

2

Вы можете использовать insertAfter для вставки клонированного элемента после смены класса. Вам не нужно, чтобы преобразовать элемент в объекте Jquery к строке, вы можете использовать этот объект внутри самой функции:

var $question = $('.question'); 
var $cloned = $question.clone(true).insertAfter($question); 
$question.addClass('first'); 
Смежные вопросы