jQuery API の wrap( function( index ) ) は、マッチした各要素を、function関数で指定した要素で、それぞれ包み込むメソッド。追加した要素は、マッチした要素の親要素となる。
記述方法
jQuery( セレクター ) . wrap( function( インデックス番号 ) {
return HTML要素;
} );
return HTML要素;
} );
「セレクター」に指定した要素を、「HTML要素」に指定した要素で包み込む。その際、インデックス番号をfunction関数に引き渡すことができる。
記述例
jQuery( '.jquery-sample' ) . wrap( function( index ) {
return '<div></div>';
} );
return '<div></div>';
} );
クラス名が「jquery-sample」の各要素を、<div></div>
で、それぞれ包み込む。
実装例(サンプル)
red
blue
green
実装例(サンプル)の動作について
「wrap/unwrap」ボタンをクリックすると、背景色が黄色のdiv要素を、背景色が黄色のdiv要素内のカラーネームの背景色のdiv要素で、それぞれ包み込む。
「wrap/unwrap」ボタンを再度クリックすると、背景色が黄色のdiv要素内のカラーネームの背景色のdiv要素を取り除く。
実装例(サンプル)のソースコード
JavaScript
<script>
<!--
jQuery( function() {
jQuery( '#jquery-sample-button' ) . toggle(
function () {
jQuery( '.jquery-sample' ) . wrap( function( index ) {
return '<div class="jquery-sample-wrap" style="background-color: ' + jQuery( this ) . text() + ';"></div>';
} );
},
function () {
jQuery( '.jquery-sample' ) . unwrap();
}
);
} );
// -->
</script>
<!--
jQuery( function() {
jQuery( '#jquery-sample-button' ) . toggle(
function () {
jQuery( '.jquery-sample' ) . wrap( function( index ) {
return '<div class="jquery-sample-wrap" style="background-color: ' + jQuery( this ) . text() + ';"></div>';
} );
},
function () {
jQuery( '.jquery-sample' ) . unwrap();
}
);
} );
// -->
</script>
CSS
<style type="text/css">
<!--
.jquery-sample {
margin: 10px;
height: 50px;
text-align: center;
background-color: yellow;
border-radius: 10px;
}
.jquery-sample-wrap {
margin: 10px;
padding: 1px;
border: 1px solid #303030;
border-radius: 18px;
}
-->
</style>
<!--
.jquery-sample {
margin: 10px;
height: 50px;
text-align: center;
background-color: yellow;
border-radius: 10px;
}
.jquery-sample-wrap {
margin: 10px;
padding: 1px;
border: 1px solid #303030;
border-radius: 18px;
}
-->
</style>
HTML
<button id="jquery-sample-button">wrap/unwrap</button>
<div class="jquery-sample">red</div>
<div class="jquery-sample">blue</div>
<div class="jquery-sample">green</div>
<div class="jquery-sample">red</div>
<div class="jquery-sample">blue</div>
<div class="jquery-sample">green</div>