2017-09-14 15 views
0

私はすべての.test1と.test2クラスを1つのdivタグにラップしましたが、その全体をラップするdivクラスをラップしようとしました。提案してください。jqueryを使ってすべてのdivをラップする方法は?

HTML

<div class="test1">This is demo paragraph1.</div> 
<div class="test2">This is demo paragraph2.</div> 
<div class="test1">This is demo paragraph1.</div> 
<div class="test2">This is demo paragraph2.</div> 
<div class="test1">This is demo paragraph1.</div> 
<div class="test2">This is demo paragraph2.</div> 

除外:

<div class="container"> 
    <div class="test1">This is demo paragraph1.</div> 
    <div class="test2">This is demo paragraph2.</div> 
</div> 
<div class="container"> 
    <div class="test1">This is demo paragraph1.</div> 
    <div class="test2">This is demo paragraph2.</div> 
</div> 
<div class="container"> 
    <div class="test1">This is demo paragraph1.</div> 
    <div class="test2">This is demo paragraph2.</div> 
</div> 

のjQuery:

$(".test1, .test2").wrapAll("<div class="container"></div>"); 
+1

あなたの質問が正しく理解されている場合は、代わりに '.wrap'を使用してください。ところで、あなたの見積もりを見てください。 –

+1

あなたのwrapAll関数で引用符を見てください。 – j08691

+0

私は同様のdivを持っているかもしれません。その時間は動作しません – jinfy

答えて

1
  1. jQuery("<div class="container"></div>")の引用符でエラーが発生しています。
  2. document ready function
  3. でこれを実行するために、必ず明確に期待が2のグループはaddBack機能を使用して、常に存在していると仮定すると少しトリッキーが、可能です。

This Fiddle上記の仮定に基づいて、それを動作させるための一つの方法を示しています

// no-conflict safe shorthand document ready 
jQuery(function($) { 
    $(".test1").each(function() { 
     $(this).next(".test2").addBack().wrapAll('<div class="container"></div>'); 
    }); 
}); 
+1

'.addBack()'をうまく使います。 –

1

あなたが迅速な選択のためのCSS adjacent sibling combinator (+)を使用して、この道を行くことができます。

$('.test1 + .test2').each(function() { 
 
    $(this).prev().addBack().wrapAll('<div class="container" />'); 
 
});
.container { 
 
    border: 1px solid black; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test1">This is demo paragraph1.</div> 
 
<div class="test2">This is demo paragraph2.</div> 
 
<div class="test1">This is demo paragraph1.</div> 
 
<div class="test2">This is demo paragraph2.</div> 
 
<div class="test1">This is demo paragraph1.</div> 
 
<div class="test2">This is demo paragraph2.</div>

JSFiddleでもあります。

古いバージョンのjQueryでは、addBack()メソッドの代わりにandSelf()を使用してください。

関連する問題