4

クラスABを持つ他のdivタグでタグをカプセル化しようとしています。最終結果は次のようになります。

<div class="A">
    <div class="B">
      **<div class="C"></div>**
    </div>
</div>

私はそれを行うために次のコードを使用しています:

<script>
    jQuery('<div class="A"><div class="B">').insertBefore('.C');
    jQuery('</div></div>').insertAfter('.C');
            </script>

ただし、コードは次のようになります。

<div class="A">
  <div class="B">
  </div>
</div>
<div class="C">
</div>

これは明らかに私が意図したものではありません。助けてください。

4

4 に答える 4

4

wrapは必要な関数です。これは、既存のタグの前後に新しいタグを挿入するのではなく、既存のタグの周りに2つのタグをラップするためです。div

$('.C').wrap('<div class="A"><div class="B"></div></div>');
于 2012-08-18T15:01:05.297 に答える
3

wrap()次の方法を使用できます。

一致した要素のセット内の各要素を HTML 構造で囲みます。

$('.C').wrap('<div class="A"><div class="B"></div></div>');

フィドル

jQuery('</div></div>').insertAfter('.C');は html タグを生成しないことに注意してください。


私の答えには、匿名の反対票を投じた人からの反対票が1つあり$('.C').wrap('<div class="A"/>')ます。の一部は次のjQuery documentionとおりです。

次の HTML を検討してください。

<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

を使用すると、次のよう.wrap()に内部要素の周りに HTML 構造を挿入できます。<div>

$('.inner').wrap('<div class="new" />');

新しい<div>要素はその場で作成され、DOM に追加されます。結果は、<div>一致した各要素をラップした新しいものです。

<div class="container">
  <div class="new">
    <div class="inner">Hello</div>
  </div>
  <div class="new">
    <div class="inner">Goodbye</div>
  </div>
</div> 
于 2012-08-18T15:01:58.153 に答える
2

あなたの呼び出しは正しくありません

する必要があります

<div class="C">Some Text</div>

<script type="text/javascript">
  $(function(){
     $(".C").wrap($("<div class='A' />")).wrap($("<div class='B' />"));​
  });
</script>

最初の呼び出しでAクラスdivを閉じなかったため、開発者がinsertAfterメソッドを実装するときに、jqueryで処理することにしました。

実例http://jsfiddle.net/mjaric/kZSTu/1

于 2012-08-18T15:01:52.873 に答える
0

jQuery ではなく、それをレンダリングしているブラウザーである可能性があります。Chrome のインスペクタが、元のマークアップで忘れていた終了タグをレンダリングするのを見たことがあります。

実際に機能を使用したいようですwrap()

スクリプトは次のようになります。

$('.C').wrap(function () {
  return '<div class="A"><div class="B">';
});
于 2012-08-18T15:03:32.627 に答える