删除除前五个lis和下一个五个lis之外的所有li

ank*_*kur 5 jquery jquery-selectors html-lists

我想删除所有li内ul除了过去五年LIS和未来五年LIS.

例如:

<ul>
    <li id="Li0"></li>
    <li id="Li1"></li>
    <li id="Li2"></li>
    <li id="Li3"></li>
    <li id="Li4"></li>
    <li id="Li5"></li>
    <li id="Li6"></li>
    <li id="Li7"></li>
    <li id="Li8"></li>
    <li id="Li9"></li>
    <li id="Li10"></li>
    <li id="Li11"></li>
    <li id="Li12"></li>
    <li id="Li13"></li>
    <li id="Li14"></li>
    <li id="Li15"></li>
    <li id="Li16"></li>
    <li id="Li17"></li>
    <li id="Li18"></li>
    <li id="Li19"></li>
    <li id="Li20"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

让说,我点击Li用id Li9.所以结果应该是

 <ul>
    <li id="Li4"></li>
    <li id="Li5"></li>
    <li id="Li6"></li>
    <li id="Li7"></li>
    <li id="Li8"></li>
    <li id="Li9"></li>
    <li id="Li10"></li>
    <li id="Li11"></li>
    <li id="Li12"></li>
    <li id="Li13"></li>
    <li id="Li14"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我知道有:lt()和:gt()排除元素选择,但到现在为止我还没有取得很大进展.

Fel*_*ing 11

如果要删除除前一个和后五个之外的所有元素,相对于单击的元素,可以将.slice() [docs]与.index() [docs]一起使用:

// assuming `this` refers to the clicked li element
var index = $(this).index(),
    $lis = $(this).parent().children();

// Math.max(...) guarantees that we are not removing from 0 to the end of
// the list of `index - 5` is negative.
// Alternatively you can use `5 > index ? 0 : index - 5`
$lis.slice(0, Math.max(0, index - 5)).add($lis.slice(index + 6)).remove();
Run Code Online (Sandbox Code Playgroud)

这是"除了列表中的第一个和最后五个元素之外的所有元素"的问题的答案.

.slice() [docs]很容易做到这一点:

$('ul > li').slice(5, -5).remove();
Run Code Online (Sandbox Code Playgroud)