1

この一連のラベルとdivs があり、1 つのラベル + 1 つの div の各グループを別の div でラップする必要があります。.each.wrapまたは.prependbu を使用する必要があることはわかっています。助けが必要です。これどうやってするの?

HTML:

<label>label</label>
<div>text</div>
<label>label</label>
<div>text</div>

ここでは、jsFiddle デモを設定しました。

結果は次のようになります。

<div class="1">
  <label>label</label>
  <div>text</div>
</div>
<div class="1">
  <label>label</label>
  <div>text</div>
</div>

4

4 に答える 4

2

または、を使用します.wrapAll()

$("label").each(function(){
  var $this = $(this);
  $this.add($this.next()).wrapAll("<div class='1'/>");
});

こちらをご覧ください。

于 2013-01-05T15:50:36.873 に答える
2

このマークアップが常にこのようになると仮定します。

$("label").each(function () {
  $(this).next("div").andSelf().wrapAll("<div>");
});

のを省略できますが"div".next他の要素が邪魔になるのを防ぎます。

http://jsfiddle.net/UNyeQ/3/

于 2013-01-05T15:51:42.563 に答える
1

これは最も効率的な方法ではないかもしれませんが、さまざまな方法を試した結果、次の方法にたどり着きました。

$('label').each(function() {
  var next = $(this).nextAll('div')[0];
  $(this).wrap('<div class="new" />').append(next);
});

私が試した他のすべては、ラベルとdivを選択して別々に反復したため、同じdivの下でそれらをペアリングしませんでした。div変数の次を保存する余分な作業nextAll()は、同じ親の兄弟で動作するためです。おそらく、が評価される前labelに new の子になるでしょう。divnextAll()

于 2013-01-05T16:26:10.347 に答える
1

ラベルを繰り返し処理し、それぞれをラップ/追加することでそれを行うことができます:

$('label').each(function() {
    $(this).wrap('<div class="l"/>').parent().next().appendTo($(this).parent());
});

デモ: http://jsfiddle.net/UNyeQ/1/

于 2013-01-05T15:49:40.490 に答える