2

jquery コードが機能しない理由がわかりません。会社で使用する Wordpress テーマを作成していますが、.insertAfter() 関数が正しく機能していないようです。ページ上のすべてのコンテンツを削除するだけです。

<div class='entry'>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>

JQuery セクション:

$('.entry:first-child').insertAfter($('.entry:last-child'));

何か案は?

4

3 に答える 3

1

これはうまくいくはずです:

$('.entry ul:first-child').insertAfter($('.entry ul:last-child'));

http://jsbin.com/ihihi4/5

Alex が指摘したように、jquery オブジェクトの代わりに .insertAfter 呼び出しで別のセレクターを使用できたはずです。

jquery のドキュメントは、これを説明するのに最適です。

http://api.jquery.com/insertAfter/

注目すべきは、insertAfter と after の微妙な違いです。

http://api.jquery.com/after

同じことがinsertBefore / beforeとappendToとappendにも当てはまります。違いを理解するのに役立ちます。

于 2011-03-18T01:04:47.723 に答える
1

あなた.entry:first-childdivそれ自体を選択していますが、最初のul. したがって、現在、要素をそれ自体の後に挿入しようとしていますが、機能しません。

console.log($('.entry:first-child')[0] == $('.entry:last-child')[0]); // true

これを試して...

$('.entry ul:first-child').insertAfter('.entry ul:last-child');

jsFiddle .

また、セレクター文字列を に渡すだけでよいこともわかります。insertAfter再度 でラップする必要はありません$()

于 2011-03-18T01:05:01.980 に答える
0

「クラス 'entry' を持つ要素を見つけて、その最初の子を選択する」ではないため、紛らわしい名前が付けられています。jQuery のドキュメントには、「[First-child] は、親の最初の子である [themsselfs] であるすべての要素を選択する」と記載されています。この場合は、div.entry です。

于 2011-03-18T01:09:16.557 に答える