2

私は次のようにいくつかのdivを持っています:

<div id='id1'>blabla</div>
<div id='id2'>blabla</div>
<div id='id3'>blabla</div>
<div id='id4'>blabla</div>
<div id='id5'>blabla</div>
<div id='id6'>blabla</div>

<div id='newdiv'>そして、指定した div をラップするために、新しい div ( ) を追加したいと思います。

たとえば、「id3」の前と「id5」の後。したがって、次のようになります。

<div id='id1'>blabla</div>
<div id='id2'>blabla</div>
<div id='newdiv'>
  <div id='id3'>blabla</div>
  <div id='id4'>blabla</div>
  <div id='id5'>blabla</div>
</div>
<div id='id6'>blabla</div>

これを行うためのjQueryコードを知っていますか?

4

3 に答える 3

5

jQuery .wrapAll()を使用します。

$('#id3, #id4, #id5').wrapAll('<div id="newdiv" />')

フィドル: http://jsfiddle.net/K4HVR/

于 2013-07-08T18:26:21.267 に答える
3

おそらく、より柔軟で再利用可能にするための単純なプラグインです。

$.fn.customWrap = function (end, wrapperDivAttr) {
    this.nextUntil(end).next().addBack().add(this).wrapAll($('<div/>', wrapperDivAttr));
}

$('#id3').customWrap('#id5', { id: 'newDiv'}); // call the function on the startelement, specify the end elements selector and attribute obj.

nextUntilで終了 div までのすべての div を取得し、次に next で終了 div も選択し、 addback()で前の要素 (nextUntil のもの) をコレクションに追加してから、 add()で開始 div も選択し、次に、それらのすべてをラップします。

デモ

于 2013-07-08T18:28:04.717 に答える
0

ちょっと急いでるので未検証ですがこんな感じでしょうか?

 $("#id3, #id4, #id5").wrapAll('<div id="newdiv" />');

編集: くそー、カールアンドレが私を打ち負かしたように見えます!

于 2013-07-08T18:27:39.193 に答える