我正在尝试删除<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>
答案 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>