0

これはおそらく私が誤解しているだけの本当に簡単な概念ですが、このjsFiddleを取ります:

HTML

<nav>
    <ul>
        <li>item 1</li>
        <li>item 2</li>
        <li>item 3</li>
    </ul>
</nav>

JS

var items = $('ul li').clone();

var cloner = $('ul').clone().addClass('before');

cloner.prependTo('nav');

items.appendTo('ul');

http://jsfiddle.net/WZykS/3/

なぜulI clone have items 1,2,3,1,2,3... 1,2,3 ではないのでしょうか ???

現在のものを複製してその複製を追加してから、その最初のリストのアイテムを複製し、その中のアイテムを複製しようとしてulいますが、アイテムが両方で複製されてしまい、それは望ましくありません。

4

5 に答える 5

1

これは、アイテムを複製するためです。それらを dom から削除することはありません。detach()を探していると思います。Detach は、要素を dom からも削除します。

これにより、ul 要素内のすべての li 要素も移動されます。ただし、これはページ上のすべてのul 要素を対象とし、それらを nav に移動することに注意してください (より具体的なセレクターを作成します。ID やクラスのように)。

デモ

$('ul').detach().appendTo('nav');
于 2013-03-28T21:16:45.803 に答える
1

$('ul').clone()<ul> そのすべての子を複製します。したがって、そうすると、とそのDOM にcloner.prependTo('nav')追加されます。<ul><li>

それからあなたはそうしますitems.appendTo('ul')。これにより、<li>複製された 3 つの がページ上のすべて <ul>の に追加されます。

var items = $('ul li').clone()またはは必要ありませんitems.appendTo('ul')

于 2013-03-28T21:17:39.340 に答える
0

問題がわかりません。

items.appendTo('ul');

<ul />最初/最後のアイテムだけでなく、両方にアイテム1、2、3を追加します。

于 2013-03-28T21:18:31.253 に答える
0

これは、最後の行で両方のリストにアイテムを追加しているためです。ulセレクターは両方のリストに一致します。

コードの最後の 2 行を入れ替えると、その時点で存在する 1 つのリストにのみ項目が追加されます。

var items = $('ul li').clone();

var cloner = $('ul').clone().addClass('before');

items.appendTo('ul');

cloner.prependTo('nav');

http://jsfiddle.net/Guffa/WZykS/5/

于 2013-03-28T21:19:03.387 に答える
0
// this creates a copy of each li
var items = $('ul li').clone();

// this clones the ul (and its children) and adds the class
var cloner = $('ul').clone().addClass('before');

// the cloned ul (with its children) are prepended to the nav element
cloner.prependTo('nav');

// the copied li are now appended to all found "ul" elements.
items.appendTo('ul');

あなたが望むことを行う最も簡単な方法は次のとおりです。

$('ul').clone().prepandTo('nav');

または、本当にそれをクリアして再度追加したい場合:

$('ul').clone().empty().prependTo('nav');
$('li').clone().appendTo('ul:nth-child(1)');
于 2013-03-28T21:22:31.057 に答える