<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");
我试图移动 .sub-menu 重复,而不是先将 li 复制到#子菜单。一切正常,只需排除第一个 li
感谢every1!所有答案都很好,但一个非常详细的+1知识:)
答案 0 :(得分:4)
我建议:
$('.sub-menu').clone().find('li + li').appendTo('#sub-menu');
以上是一个简单的演示,不会删除原始文件,并假设您将li
元素移动到的元素是一个列表(ul
或ol
)。
选择器li + li
找到所有li
个元素,它们是另一个li
元素的相邻兄弟元素;根据定义排除:first-child
。
当然,你可以使用替代兄弟选择器,'general-sibling'选择器(~
字符):
$('.sub-menu').clone().find('li:first-child ~ li').appendTo('#sub-menu');
就速度而言,一般兄弟方法似乎最快(在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');
参考文献:
答案 1 :(得分:0)
$('.sub-menu > li').filter(function(i, el){
return i > 0;
}).appendTo('#sub-menu');
答案 2 :(得分:0)
应该这样做
spec.find('ul.sub-menu > li:gt(0)').clone().prependTo("#sub-menu");
抱歉有一个小提琴,但意外更新。