如何用jQuery移除列表中除含特定ID输入框外的li元素
解决方案:用jQuery保留指定li并移除其他元素
当然可以用jQuery实现你的需求,而且完全可以借助:not选择器来完成,下面给你两种清晰可行的方案:
方案一:结合:not与:has选择器直接移除不符合条件的li
你可以通过:not排除掉包含目标input的li,只移除那些不满足条件的元素,代码如下:
$("#search-filter-column ul li:not(:has(input[id$='-all']))").remove();
代码解释:
input[id$='-all']:使用属性结尾匹配选择器$=,选中所有ID以-all结尾的input元素:has(input[id$='-all']):选中包含上述input的父级li元素(也就是你想要保留的li):not(...):排除掉上面选中的保留项,剩下的就是需要移除的li,最后调用.remove()完成删除
方案二:先选中要保留的li,再移除其兄弟元素
这种方式更直观,先定位到你需要保留的li,再移除它的所有兄弟li元素:
$("#search-filter-column ul li:has(input[id$='-all'])").siblings().remove();
这个逻辑是:先找到包含ID后缀为-all的input的li,然后移除它的所有同级li元素,最终只保留目标li。
针对你的HTML示例验证
以你给出的HTML结构为例:
<ul> <li> <input id="filter-types-all" name="filter-types-all" type="checkbox" checked="checked"> </li> <li> <input id="filter-types-suv" name="filter-types-suv" type="checkbox"> </li> </ul>
使用上述任意一种代码后,第二个li(包含filter-types-suv的input)会被移除,第一个li会被保留,完全符合你的需求。
小提示:如果页面中有多个ul需要处理,建议给目标ul添加专属的class或ID,让选择器更精准,避免误操作其他列表。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

