2016-12-14 1 views
4

Что такое простой способ дублирования каждого элемента в классе как родного брата? Например, он должен изменить этот HTML:Как клонировать и добавлять несколько элементов на место с помощью jQuery?

<body> 
    <div> 
     <h1> Foos </h1> 
     <span class='duplicate-me'> foo </span> 
    </div> 
    <div> 
     <h1> Bars </h1> 
     <span class='duplicate-me'> bar </span> 
    </div> 
</body> 

в:

<body> 
    <div> 
     <h1> Foos </h1> 
     <span class='duplicate-me'> foo </span> 
     <span class='duplicate-me'> foo </span> 
    </div> 
    <div> 
     <h1> Bars </h1> 
     <span class='duplicate-me'> bar </span> 
     <span class='duplicate-me'> bar </span> 
    </div> 
</body> 

Благодарности

ответ

2

Там вы идете - append к родительскому элементу после cloningduplicate-me элемента.

Смотреть демо ниже:

$(function(){ 
 
    $('.duplicate-me').each(function(){ 
 
    $(this).parent().append($(this).clone()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<body> 
 
    <div> 
 
    <h1> Foos </h1> 
 
    <span class='duplicate-me'> foo </span> 
 
    </div> 
 
    <div> 
 
    <h1> Bars </h1> 
 
    <span class='duplicate-me'> bar </span> 
 
    </div> 
 
</body>

+1

Хотя это работает на примере HTML, он не ставит клонов, как братья и сестры, в непосредственной близости к оригиналам –

+0

он работает здесь! хорошо, а что такое реальная ситуация - я имею в виду настоящий HTML? – kukkuz

+2

Пример не был исчерпывающим.Я попытался предположить «рядом», сказав «на месте» и «дублировать», но, возможно, я мог бы быть более ясным. –

0

Все, что вам нужно:

1) Clone элементы с .duplicate-me класса.

2) Добавить эти элементы в closest div, то есть их parent.

Пожалуйста, попробуйте следующее:

$('.duplicate-me').each(function(){ 
    var clone= $(this).clone(); 
    $(this).closest('div').append(clone); 
}); 

Ссылки:

$('.duplicate-me').each(function(){ 
 
    var clone= $(this).clone(); 
 
    $(this).closest('div').append(clone); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<body> 
 
    <div> 
 
    <h1> Foos </h1> 
 
    <span class='duplicate-me'> foo </span> 
 
    </div> 
 
    <div> 
 
    <h1> Bars </h1> 
 
    <span class='duplicate-me'> bar </span> 
 
    </div> 
 
</body>

+1

downvoter, пожалуйста, комментарий! – kukkuz

+0

@kukkuz, Да, вы правы, я не знаю, почему я получаю downvote? :( –

+1

@kukkuz, я голосую за ваш ответ, чтобы снова получить 2 очка :) –

2

Используйте insertAfter вставить дубликат элемента, созданных с помощью clone только рядом с ним

$(function(){ 
 
    $('.duplicate-me').each(function(){ 
 
    $(this).clone().insertAfter($(this)) 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<body> 
 
    <div> 
 
    <h1> Foos </h1> 
 
    <span class='duplicate-me'> foo </span> 
 
    </div> 
 
    <div> 
 
    <h1> Bars </h1> 
 
    <span class='duplicate-me'> bar </span> 
 
    </div> 
 
</body>

+0

FWIW, не нужно использовать второй '$()' в '$ (this) .clone(). InsertAfter ($ (this))', просто '$ (this) .clone(). insertAfter (this)' отлично. –

Смежные вопросы