尝试删除li大于的ul中的所有li

时间:2019-03-28 22:41:54

标签: javascript jquery html

我正在尝试删除<li>大于数字的<ul>内的所有id

它应删除ID为6到4的<li>

$('.row-fruit').filter(function (i) {
  return this.id > 3;
}).remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<ul id="myFruits">
   <li class="row-fruit" id="1">mango</li>
   <li class="row-fruit" id="2">tomato</li>
   <li class="row-fruit" id="3">banana</li>
   <li class="row-fruit" id="4">watermelon</li>
   <li class="row-fruit" id="5">apple</li>
   <li class="row-fruit" id="6">lemon</li>
</ul>

2 个答案:

答案 0 :(得分:2)

虽然您的代码示例按原样工作,但您应该将ID转换为字符串中的数字,以使ID可以继续对多于一位数字的数字起作用。

$('.row-fruit').filter(function(i) {

   return (parseInt(this.id, 10) > 3);

 }).remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<ul id="myFruits">
   <li class="row-fruit" id="1">mango</li>
   <li class="row-fruit" id="2">tomato</li>
   <li class="row-fruit" id="3">banana</li>
   <li class="row-fruit" id="4">watermelon</li>
   <li class="row-fruit" id="5">apple</li>
   <li class="row-fruit" id="6">lemon</li>
  </ul>

在这里,我使用parseInt来转换为数字。


这是非jQuery版本:

Array.from(document.querySelectorAll('.row-fruit'))
  .filter(el => parseInt(el.id, 10) > 3)
  .forEach(el => el.remove());
<ul id="myFruits">
  <li class="row-fruit" id="1">mango</li>
  <li class="row-fruit" id="2">tomato</li>
  <li class="row-fruit" id="3">banana</li>
  <li class="row-fruit" id="4">watermelon</li>
  <li class="row-fruit" id="5">apple</li>
  <li class="row-fruit" id="6">lemon</li>
</ul>

答案 1 :(得分:2)

以数字开头的ID通常不是一个好主意,如果您一直使用ID作为字符,而只是使用gt()之类的字符进行过滤,那么您就不会遇到这个问题了

$('.row-fruit:gt(2)').remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul id="myFruits">
   <li class="row-fruit" id="a1">mango</li>
   <li class="row-fruit" id="a2">tomato</li>
   <li class="row-fruit" id="a3">banana</li>
   <li class="row-fruit" id="a4">watermelon</li>
   <li class="row-fruit" id="a5">apple</li>
   <li class="row-fruit" id="a6">lemon</li>
  </ul>