jQuery API の clone( [withDataAndEvents] [, deepWithDataAndEvents] ) は、マッチした要素をコピーするメソッド。withDataAndEventsに、trueを設定すると、イベントハンドラや要素データも、要素と一緒にコピーする。deepWithDataAndEventsに、trueを設定すると、子孫要素のイベントハンドラや要素データも、要素と一緒にコピーする。
引数
- withDataAndEvents
booleanType(論理型)。
trueであれば、イベントハンドラや要素データも、要素と一緒にコピーする。
falseであれば、イベントハンドラや要素データは、コピーしない。
- deepWithDataAndEvents
booleanType(論理型)。
trueであれば、子孫要素のイベントハンドラや要素データも、要素と一緒にコピーする。
falseであれば、子孫要素のイベントハンドラや要素データは、コピーしない。
記述方法
「セレクター」にマッチした要素をコピーする。イベントハンドラや要素データも、要素と一緒にコピーする。子孫要素のイベントハンドラや要素データは、コピーしない。
記述例
idがjquery-sampleである要素内のli要素を、コピーし、idがjquery-sampleである要素の最後に追加する。イベントハンドラや要素データも、li要素と一緒にコピーする。子孫要素のイベントハンドラや要素データは、コピーしない。
実装例(サンプル)
- 項目1
- 項目1-1
- 項目1-2
- 項目2
- 項目2-1
- 項目2-2
- 項目3
- 項目3-1
- 項目3-2
実装例(サンプル)の動作について
「項目1-1」をクリックすると、項目1-1をコピーし、リストの最後に追加する。
「項目1」をダブルクリックすると、項目1をコピーし、リストの最後に追加する。
コピーした「項目1」の入れ子の「項目1-1」をクリックしても、コピーしない。
コピーした「項目1」をダブルクリックすると、項目1をコピーし、リストの最後に追加する。
項目2、項目3も同様。
実装例(サンプル)のソースコード
JavaScript
<!--
jQuery( function() {
jQuery( '#jquery-sample-ul > li' ) . dblclick( function () {
jQuery( this ) . clone( true, false ) . appendTo( '#jquery-sample-ul' );
} );
jQuery( '.jquery-sample-ul-ul > li' ) . click( function () {
jQuery( this ) . clone( true, false ) . appendTo( jQuery( this ) . parent() );
} );
} );
// -->
</script>
CSS
<!--
#jquery-sample-ul li{
cursor: pointer;
}
-->
</style>
HTML
<li>項目1
<ul class="jquery-sample-ul-ul">
<li>項目1-1</li>
<li>項目1-2</li>
</ul>
</li>
<li>項目2
<ul class="jquery-sample-ul-ul">
<li>項目2-1</li>
<li>項目2-2</li>
</ul>
</li>
<li>項目3
<ul class="jquery-sample-ul-ul">
<li>項目3-1</li>
<li>項目3-2</li>
</ul>
</li>
</ul>