Javascript 如何从具有特定ID的列表中删除元素

Javascript 如何从具有特定ID的列表中删除元素,javascript,jquery,html,Javascript,Jquery,Html,我有两个列表,我想删除所有li标记,除了那些包含输入元素且-all作为其id的li标记。这是我在jQuery中使用选择器可以实现的吗?可能使用not选择器 这就是我目前拥有的:$(“#搜索筛选器列ul li”).remove() 是的,您可以使用,并且: 匹配#search-filter_列中ul中的li元素,该列不包含输入,其id以-all结尾 你在其他地方的评论中说 我还有包含-location-的li元素。我也不想删除这些li元素 您可以有多

我有两个列表,我想删除所有
li
标记,除了那些包含输入元素且
-all
作为其
id
的li标记。这是我在jQuery中使用选择器可以实现的吗?可能使用not选择器

这就是我目前拥有的:
$(“#搜索筛选器列ul li”).remove()

是的,您可以使用,并且:

匹配
#search-filter_列
ul
中的
li
元素,该列不包含
输入,其
id
-all
结尾

你在其他地方的评论中说


我还有包含-location-的li元素。我也不想删除这些li元素

您可以有多个
:not
条件,
li:not(this):not(that)
。它们和CSS选择器的其他方面一样。所以你可以用(
*=
)这样做:

实例:

$(“#搜索筛选器列ul li:not(:has(输入[id$=-all])):not(:has(输入[id*=-location-]))))))。删除()

类型:
公司:
位置:

您不必搜索
  • 元素然后测试它们的内容,您可以测试
    输入
    元素中
    元素,然后使用以及排除任何不相关的
    输入
    元素。然后,您可以使用方法删除任何匹配元素的父元素
    li

    //删除作为没有
    //以($=)“all”结尾的id或以“filter location-”开头的id。
    $(“#搜索筛选器列ul>li输入:非([id$='-all']):非([id^='filter-location-'])).parent().remove()
    
    
    

    您可以使用jQuery的
    过滤器
    功能来过滤掉您不想删除的元素:

    $(“#搜索筛选器列ul li”).filter(函数(){
    返回$(this.find('input[id$=-all]')。长度;
    }).remove()
    
    
    

    您尝试按ID选择、获取父项并删除父项。 例:


    非常感谢。$=是什么意思?@Michael:这是以选择器结尾的属性。更多信息请参见上面的链接::-)非常感谢。$=是什么意思?@Michael查看我的最新答案。它的意思是“以结尾”,因为您需要的输入元素是
    id
    “以
    -all
    结束。快速提问:刚刚遇到一个问题lol,如果我想删除所有没有筛选器位置和-all作为ID的li元素,该怎么办?我们能给选择器加一个OR吗?@Michael,你能澄清一下吗。
    id
    应该是什么?在您的示例中,我没有看到任何id为
    且包含
    筛选器位置的元素。我还有包含
    -location-
    的li元素。我也不想删除这些li元素。现在,当使用上述方法时,它将删除这些元素。
    <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" checked="checked">
       </li>
       <li>
           <input id="filter-types-special" name="filter-types-special" type="checkbox" checked="checked">
       </li>
    </ul>
    
    
    <ul>
       <li>
           <input id="filter-company-all" name="filter-company-all" type="checkbox" checked="checked">
       </li>
       <li>
           <input id="filter-company-1" name="filter-company-1" type="checkbox" checked="checked">
       </li>
       <li>
           <input id="filter-company-2" name="filter-company-2" type="checkbox" checked="checked">
       </li>
    </ul>
    
    
    <ul>
       <li>
           <input id="filter-location-1" name="filter-location-1" type="checkbox" checked="checked">
       </li>
       <li>
           <input id="filter-location-2" name="filter-location-2" type="checkbox" checked="checked">
       </li>
       <li>
           <input id="filter-location-3" name="filter-location-3" type="checkbox" checked="checked">
       </li>
    </ul>
    
    $("#search-filter-column ul li:not(:has(input[id$=-all]))").remove();
    
    $("#search-filter-column ul li:not(:has(input[id$=-all])):not(:has(input[id*=-location-]))").remove();
    
    $('#ID_REMOVE').parent().remove()