在 JQuery 对象上使用 .splice()

Gid*_*eon 5 javascript jquery

我们通过以下方式删除某个html元素的子元素JQuery

$(PARENT_SELECTOR).children(CHILD_SELECTOR).remove()
Run Code Online (Sandbox Code Playgroud)

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

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

    for(var x = 0; x < 3; x++) {
       $(PARENT_SELECTOR).children().last().remove()
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除第四至第六个孩子。这里我将使用:

    $(PARENT_SELECTOR).children().eq(3).remove()
    $(PARENT_SELECTOR).children().eq(4).remove()
    $(PARENT_SELECTOR).children().eq(5).remove()
    
    Run Code Online (Sandbox Code Playgroud)
  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()
    }
    
    Run Code Online (Sandbox Code Playgroud)

这样的例子不胜枚举……我可以为每个场景制作自己的具体案例脚本[,这很简单]。我只是想知道JQuery它是否已经有这样的自己的功能——它会让我的脚本更短,并且不会让我重复编写类似的代码。

Bla*_*... 5

我认为$.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();
Run Code Online (Sandbox Code Playgroud)

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