1

私はそれがしないことを理解.wrapして.appendいません。

ラップの主な目的が要素の周りに何かを追加することである場合、使用を簡単にやめて代わりに.wrap使用でき.appendますよね?

だから、私は何かを追加するためにこのテストコードを使用しています:

<script type="text/javascript">

$(document).ready(function(){

    var $theWrapper = $('<div class="im-the-wrapper" />');
    var $theContent = $('<p>Me</p>');

    console.log($theWrapper.get(0));
    console.log($theContent.get(0));

    $('body').append($theContent);

    $theWrapper.append($theContent);

});

</script>

結果:

ラップの結果

そして、物事をラップするこのテストコード:

<script type="text/javascript">

$(document).ready(function(){

    var $theWrapper = $('<div class="im-the-wrapper" />');
    var $theContent = $('<p>Me</p>');

    console.log($theWrapper.get(0));
    console.log($theContent.get(0));

    $('body').append($theContent);

    $theContent.wrap($theWrapper);

});

</script>

結果:

ラップの結果

どちらもまったく同じオブジェクトを返すと思っていましたが、そうではありません。バックグラウンドで実際に何が起こっているのでしょうか。

4

3 に答える 3

2

element.wrap(wrapper)基本的にこれを行います:

element.before(wrapper);
wrapper.append(element);

そのためwrap、要素を使用しても失われませんが、最初に要素の前にラッパーを追加せずに手動で行うと、DOM から要素を削除するだけになります。

于 2013-04-22T18:11:38.430 に答える