jsのclone()とCSSのcounter-incrementを合わせて使ったときの振る舞いの確認です。clone()は要素の複製を作成します。counter-incrementは要素の連番を自動で振ってくれます。
サンプルは、class名「count-m」を付けたdiv要素、(以下、親要素と呼称)が、4つの子要素(div)を内蔵し、この子要素にcounter-incrementで連番をふっています。
この4つの子要素は、それぞれ個別にクリックすると、自身を複製して親要素内に追加します。そのとき、連番もインクリメントされます。追加は何度でも行えますが、複製したものをクリックしても再複製はありません。また、「全体を複製」ボタンをクリックすると、4つの子要素を親要素ごと複製します。その後、元の子要素クリックで個別に複製ができますが、この複製のとき、全体が複製された側も複製が追加されます。先に子要素ごとに複製し、その後全体を複製すると、そのときの状態がそのまま複製されます。いずれも連番の重複はありません。
なお、分かりやすくするため、全体複製の場合のみ、10pxのmarginを空けています。
サンプル
サンプルテキストA・サンプルテキストA・サンプルテキストA
サンプルテキストB・サンプルテキストB・サンプルテキストB
サンプルテキストC・サンプルテキストC・サンプルテキストC
サンプルテキストD・サンプルテキストD・サンプルテキストD
サンプルの構造(htmlソース)
<div id="wrapper">
<button id="btn">全体を複製</button>
<div class="count-m">
<div>サンプルテキストA・サンプルテキストA・サンプルテキストA</div>
<div>サンプルテキストB・サンプルテキストB・サンプルテキストB</div>
<div>サンプルテキストC・サンプルテキストC・サンプルテキストC</div>
<div>サンプルテキストD・サンプルテキストD・サンプルテキストD</div>
</div>
</div>
サンプルのCSSソース
body {
counter-reset: num-m 0;
}
#wrapper {
width:90%;
margin: 10px auto;
text-align:left;
}
.count-m {
width:100%;
margin: 10px auto;
}
.count-m div:before {
counter-increment: num-m 1;
content: "div要素 " counter(num-m) "番目 ";
}
サンプルのScriptソース
$(function(){
$("#btn").on('click', function(){
$(".count-m").clone().appendTo("#wrapper");
});
$(".count-m div").on('click', function(){
$(this).clone().appendTo(".count-m");
});
});