0
<ul class="sub-menu">
    <li id="menu-item-88" class="menu-item menu-item-type-custom menu-item-object-custom">
    <li id="menu-item-43" class="menu-item menu-item-type-custom menu-item-object-custom">
    <li id="menu-item-44" class="menu-item menu-item-type-custom menu-item-object-custom">
    <li id="menu-item-48" class="menu-item menu-item-type-custom menu-item-object-custom">
    <li id="menu-item-49" class="menu-item menu-item-type-custom menu-item-object-custom">
</ul>

spec.find($(".sub-menu:not(:first-child)")).clone().prependTo("#sub-menu");

最初のliなしで.sub-menuの複製を#sub-menuに移動しようとしています。最初のliを除外するだけですべて正常に動作します


every1に感謝!すべての答えは良いですが、1つは知識に非常に詳細です:)

4

3 に答える 3

4

私はお勧めします:

$('.sub-menu').clone().find('li + li').appendTo('#sub-menu');

JS フィドルのデモ

上記は、元の要素を削除しない単純なデモであり、要素の移動先のli要素リスト ( または のいずれulol) であると想定しています。

セレクターは、別の要素の隣接する兄弟であるli + liすべての要素を見つけます。これは、定義により を除外します。lili:first-child

もちろん、代替の兄弟セレクターである「一般的な兄弟」セレクター (~文字)を使用することもできます。

$('.sub-menu').clone().find('li:first-child ~ li').appendTo('#sub-menu');

JS フィドルのデモ

速度に関しては、一般的な兄弟アプローチが最も速いようです (Chromium 27/Ubuntu 12.10 で)、JS Perf demo

以前の JS Perf テストを更新したところ、実際には、使用したfilter()方がさらに速いようです。

$('.sub-menu').clone().find('li').filter(function(i) {
  return i > 0;
}).appendTo('#sub-menu');

JS フィドルのデモ

参考文献:

于 2013-07-20T01:19:24.560 に答える
0
$('.sub-menu > li').filter(function(i, el){
    return i > 0;
}).appendTo('#sub-menu');
于 2013-07-20T01:18:22.890 に答える
0

やるべき

spec.find('ul.sub-menu > li:gt(0)').clone().prependTo("#sub-menu");

申し訳ありませんが、フィドルがありましたが、誤って更新しました。

于 2013-07-20T01:21:27.670 に答える