在JQuery对象

时间:2015-08-06 03:50:23

标签: javascript jquery

我们通过html删除某个JQuery元素的子项:

$(PARENT_SELECTOR).children(CHILD_SELECTOR).remove()

但是我怎样才能使其表现得像.splice()方法(例如,在DOM树上删除给定的索引和偏移量)。例如:

  1. 删除最后三个孩子。在这里,我最有可能使用:

    for(var x = 0; x < 3; x++) {
       $(PARENT_SELECTOR).children().last().remove()
    }
    
  2. 删除第4至第6名儿童。我将在这里使用:

    $(PARENT_SELECTOR).children().eq(3).remove()
    $(PARENT_SELECTOR).children().eq(4).remove()
    $(PARENT_SELECTOR).children().eq(5).remove()
    
  3. 从第5个孩子开始删除5个元素(这是我希望.splice()具有JQuery功能的真实场景:

    var starting = 5,
        index = 5
    
    // I haven't tested this yet.
    for(var x = index + starting; x > index; x--) {
        $(PARENT_SELECTOR).children().eq(x - 1).remove()
    }
    
  4. 然后列表继续......我可以为每个场景制作我自己的案例到案例 [,这很容易] 。我只是想知道JQuery是否已经拥有它自己的功能 - 它会使我的脚本缩短,并且不会让我重复编写类似的代码。

2 个答案:

答案 0 :(得分:2)

我认为$.slice正是您所寻找的。以下是示例:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

$( "li" ).slice( 2, 4 ).remove();

请记住,.slice()以索引0开头,因此上面的例子将删除第三个到第五个孩子。

答案 1 :(得分:1)

jQuery Slice方法根据索引选择元素子集。 此方法用于通过起点和终点限制组中元素的选择:start参数是从中创建子集的起始索引(从0开始),stop参数是可选的结束点。 您可以找到更好的解释herehere

$(document).ready(function(){
    $("p").slice(1).css("background-color", "red");
    $("p").slice(2,4).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>para 0.</p>
<p>para 1.</p>
<p>para 2.</p>
<p>para 3.</p>
<p>para 4.</p>