如何在指定元素后定位容器中的所有节点?

时间:2014-07-07 22:27:13

标签: jquery html

我想定位$(".item:eq(1)")<ul class="items">之后的所有元素,其中应包括<li class="category">,然后将其添加到<ul class="items-2">

原始树:

<ul class="items">
  <li class="category">
    <h1>Title 1</h1>
    <ul>
      <li class="item">item 1</li>
      <li class="item">item 2</li>
      <li class="item">item 3</li>
    </ul>
  </li>
  <li class="category">
    <h1>Title 2</h1>
    <ul>
      <li class="item">item 4</li>
      <li class="item">item 5</li>
      <li class="item">item 6</li>
    </ul>
  </li>
</ul>
<ul class="items-2></ul>

aditional info

最终,我尝试将<ul class="items>限制为x个项目。如果该列的数量超过x,我希望将其移至下一个<ul class="items-2">

我发现这比我原先想的要复杂,但这是预期的树:

<ul class="items">
  <li class="category">
    <h1>Title 1</h1>
    <ul>
      <li class="item">item 1</li>
    </ul>
  </li>
</ul>
<ul class="items-2>
  <li class="category">
    <ul>
      <li class="item">item 2</li>
      <li class="item">item 3</li>
    </ul>
  </li>
  <li class="category">
    <h1>Title 2</h1>
    <ul>
      <li class="item">item 4</li>
      <li class="item">item 5</li>
      <li class="item">item 6</li>
    </ul>
  </li>
</ul>

3 个答案:

答案 0 :(得分:0)

不确定这是否是您正在寻找的内容,但您可以splice像常规数组一样使用jQuery对象:

var all = $('.item');
var thirdOnwards = all.splice(2);
$('.items-2').append(thirdOnwards);

http://jsfiddle.net/rvM8q/

答案 1 :(得分:0)

如果由于某种原因无法使用splice,可以选择以下方法:

var ignoreUntil = $(".item:eq(1)")[0];
var result = $(".item").filter(function() {
    if (this == ignoreUntil) {
        ignoreUntil = null;
        return false;
    }

    return !ignoreUntil;
});

答案 2 :(得分:0)

您可以在选择器中使用gt功能,如:

$(".item:gt(1)")

然后,您可以继续使用jQuery附加:

$(".item:gt(1)").each(function(){

    $('.items-2').append($(this).clone());
});

fiddle

更新了OP的要求变化: updated fiddle