私のページには、<article>
コンテナからすべてをアンラップし、その後、それぞれを別々にラップするボタンがあります<section>
。私の質問は、ボタンをクリックしてそのアクションを元に<article>
戻し、すべてのグループが最初と同じ位置に戻るようにすることが可能かどうかです。
私は例を作成しました:
私のページには、<article>
コンテナからすべてをアンラップし、その後、それぞれを別々にラップするボタンがあります<section>
。私の質問は、ボタンをクリックしてそのアクションを元に<article>
戻し、すべてのグループが最初と同じ位置に戻るようにすることが可能かどうかです。
私は例を作成しました:
<article>
各タグに、タグが含まれているものを識別するものを事前にマークする必要があります<section>
。これをタグに入れると、次のようになりclass
ます。
$('article').addClass(function() {
return 'section-' + $(this).parent().index();
});
それらをラップバックするときは、でグループ化する必要がありますclass
。
$('#wrapback').click(function() {
$('article').unwrap();
for (var i = 0; i < sections; ++i) {
var articles = $('article.section-' + i);
articles.wrapAll('<section/>');
}
});
私のメソッドは jQuery.clone();
メソッドを使用するだけです。
参考:jsFiddle
jQuery コード:
var oldWrap = $('#wrapper').clone();
$('#unwrap').click(function() {
$('article').unwrap();
$('article').wrap('<section></section>');
});
$('#wrapback').click(function() {
$('#wrapper').replaceWith(oldWrap);
oldWrap = $('#wrapper').clone();
});
いくつかの属性または.data
をそれぞれarticle
に追加してグループ化してから、 を使用して.wrapAll
ください。
おそらく最も簡単な方法はaddClass
、ループのインデックスを使用することです。これにより、特定のクラスで.each
すべてをすばやく見つけてarticles
、それらをまとめてラップすることができます。
1 つの実装:
$('#unwrap').on('click', function() {
$('section').each(function(i, el) {
$(this).find('article').addClass('_index_'+i).unwrap();
});
$('article').wrap('<section></section>');
});
$('#wrapback').on('click', function() {
var idx = 0;
while ($('article._index_' + idx).length) {
$('article._index_' + idx).unwrap().wrapAll('<section>');
idx += 1;
};
});
を使用してそれらを再ラップできます.wrapAll
。
基本的なコードは次のようになります。
デモ: http: //jsfiddle.net/SO_AMK/UhWqa/
jQuery:
$('#unwrap').click(function() {
$('article').unwrap()
$('article').wrap('<section></section>')
})
$("#wrapback").click(function() {
$("article").unwrap().wrapAll("<section></section>");
});
HTML:オリジナル
CSS:オリジナル
jquery.wrapAll()が必要ですが、記事の各グループを区別する必要があります(divでラップするなど)。そうでない場合、wrapAll
メソッドはすべての記事を1つにラップします。section