选择不是第一个孩子且不包含某些东西的所有`li`

Alo*_*iel 3 javascript jquery list

我想选择除第一个孩子和所有不包含的li之外的所有li: ab 2

所以,如果我的名单是:

<ul id="list">
    <li>1</li>
    <li>ab 1</li>
    <li>ab 2</li>
    <li>ab 3</li>
    <li>ab 4</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这将是:

<ul id="list">
    <li>1</li>
    <li>ab 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我试过了:

$("#list").find("li:not(:first-child), li:not(:contains('ab 2'))").each(function () {
      var current = $(this);
      current.css('display', 'none');
}
Run Code Online (Sandbox Code Playgroud)

但是我的所有名单都消失了......

Dav*_*ing 5

这应该很快:

$("#list li")
    .slice(1) // exclude the first
    .not(':contains(ab 2)') // exclude all "ab 2"
Run Code Online (Sandbox Code Playgroud)

要删除它们,只需调用.remove().hide()最后,无需循环.

演示:http://jsfiddle.net/tY4cm/

这里有一个jsPerf的不同解决方案:http://jsperf.com/single-selector-vs-filter-perf/2