1

この例は本からのものです。clone() のパラメーターを false に設定すると、テキストなしで段落を複製できることがわかります。jQuery のドキュメントをチェックアウトし、true と false のすべての組み合わせを試しました。結果は、テキストなしで段落をコピーできないことを証明しました. jQueryの単なるバグですか?

<html>
    <head>
        <title>Copying element</title>
        <script src="../jquery-1.8.0.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                //copy elment and insert
                $('div.chapter p:eq(0)').clone(false).insertBefore('div.chapter');

            });
        </script>
        <style type="text/css">
            span.footnote{
                font-style:italic;
                display:block;
            }
            .chapter span.footnote{
                display:inline;
            }
            .chapter p{
                width:50%;
            }
        </style>
    </head>
    <body>
        <h1 id="f-title">Flatland: A ROmance of Many Dimension</h1>
        <div id="f-author">by Edwin A. Abbott</div>
        <h2>Part 1, Section 3</h2>
        <h3 id="f-subtitle">Concerning the Inhabitants of Flatland</h3>
        <div id="excerpt">an excerpt</div>
        <div class="chapter">
            <p class="squre">Our professional Men and Gentlemen are Squares (to which class I myself belong) and FIve-Sided Figures
                or Pentagons.
            </p>
            <p class="mobility hexagon">Next above these come the Nobility of whoem there are serverl degress
                <a href="http://en.wikipedia.org/wiki/Hexagon">Hexagons</a>and from thence rising in the number of theirside till they received the honourable title of 
                <a href="http://en.wikipedia.org/wiki/Polygon">Polygonal</a>
            </p>
            <p><span class="pull-quote">It is a <span class="drop">Law of Nature</span>with us that a mable child shall have </span>    
            </p>
            <p>But this rule applies not always to the Tradesman</p>
            <p>Rarely -- in proportion to the vast numbers of Isosceles
            </p>
            <p>The birth of tha Ture Equlaterial Traignel from Isoscele parents is the subject of rejociing in the coutry for many furlongs.
            </p>
            <p>How admirable is the Law of Compensation!
            </p>
        </div>
    </body>
</html>
4

4 に答える 4

3

クローンのドキュメントを読み直してください。

要素がそのコンテンツとともにコピーされることを指定します (ディープ コピー)。ブール値パラメーターは、埋め込み要素ではなく、イベント ハンドラーとjquery データのみを処理します。

したがって、これは通常の構成です。div.chapter( $('div.chapter p:eq(0)')) の最初の段落がその内容と共にコピーされます。

ディープ クローニング以外の関数が必要な場合は、次の関数を使用できます。

// clone an element with attributes, without the weight of calling clone and emptying it
// (call it on a non jquery element, using  [0] if necessary)
function nondeepclone(element) {
    var newelem = document.createElement(element.tagName);
    for (var i = 0; i < element.attributes.length; i++) {
        var attr = element.attributes[i];
        newelem.setAttribute(attr.name, attr.value);
    }
    return newelem;
}

しかし、これに実際の用途があるかどうかはわかりません。

于 2012-08-22T18:54:27.653 に答える
1

あなたが望むのは次のとおりだと思います:

$('div.chapter p:eq(0)').clone(false).empty().insertBefore('div.chapter');

これにより、段落が複製され、その子が削除されてから挿入されます。 .clone(false)only は、元の要素に添付されたデータとイベントがクローンにコピーされないことを意味します。

于 2012-08-22T19:00:45.553 に答える
1

あなたが探しているのは -

  $(document).ready(function(){
    //copy element and insert               
    var clone = $('div.chapter p:eq(0)').clone().empty();
    clone.insertBefore('div.chapter');

  });

clone() の後の empty() メソッドは、選択した HTML 要素のデータであるすべての子要素を削除します。

于 2012-08-23T17:05:58.620 に答える
1

テキストなしで段落を複製することはできないと思います。ただし、テキストを空白に設定することで、クローンを作成した直後にクリアできます。(またはジャックワンダーが提案したように .empty() を使用します)

参照: http://jsfiddle.net/sQF62/1/

参照:コンテンツのないテキスト ボックスの Jquery クローン

于 2012-08-22T18:55:50.973 に答える