Javascript 使用jQuery查找嵌套列表中包含特定文本的列表项

Javascript 使用jQuery查找嵌套列表中包含特定文本的列表项,javascript,jquery,css,html-lists,each,Javascript,Jquery,Css,Html Lists,Each,我正在建立一种方法,使用“修改器”或属性的无线电组来选择或过滤列表。我正在筛选的列表可以是多级嵌套列表 我的最终目标是只显示具有正确属性或文本的预期列表项,其他项将被隐藏 在我的例子中,我遇到了只选择我想要的东西的问题。如果有一个li包含我要查找的文本,那么它将选择整个嵌套ul 这是我做的 $('.refine')。在('change','input[type=“radio”]',function()上{ var sortattr=$(this.val(); $(“.mylist li:cont

我正在建立一种方法,使用“修改器”或属性的无线电组来选择或过滤列表。我正在筛选的列表可以是多级嵌套列表

我的最终目标是只显示具有正确属性或文本的预期列表项,其他项将被隐藏

在我的例子中,我遇到了只选择我想要的东西的问题。如果有一个li包含我要查找的文本,那么它将选择整个嵌套ul

这是我做的

$('.refine')。在('change','input[type=“radio”]',function()上{
var sortattr=$(this.val();
$(“.mylist li:contains(“+sortattr+”)”)。每个(函数(){
$(this.addClass('here');
});
});
左边
赖特
未指明
  • 项目杂项标题
    • 项目剩余
    • 项目权
    • 项目剩余
    • 未指明项目
    • 把别的东西放进去
  • 项目剩余
  • 项目权
  • 项目剩余
  • 未指明项目
  • 把别的东西放进去

将默认样式添加到
li

li{
    color: #000;
    font-weight: normal;
}

首先创建一个如下所示的数组

var myArray=new Array();
myArray.push(item you want to push);
然后

像下面这样隐藏你的内容

var myArray=new Array();
myArray.push(item you want to push);

您只需检查
  • 中是否有要突出显示的子元素 因此,只要添加一个if构造就可以解决这个问题

    $('.refine').on('change', 'input[type="radio"]', function() {
    
        var sortattr = $(this).val();   
    
        $(".mylist li:contains('" + sortattr + "')").each(function() {
            if($(this).children().length == 0){
                $(this).addClass('here');
            }
        });
    });
    

    整个li之所以被选中,是因为您的选择器

    您当前的选择器是“.mylist li”

    您可以编写迭代代码来查找请求的文本,例如“left”,它将css添加到完整的选择器中

    因此,它不是将类添加到“.mylist li ul li”中,而是将类添加到“.mylist li” 因此,整个外部李得到突出显示


    您可以使用遍历嵌套的ul li

    还需要一件事:
    $(“.mylist li”).removeClass('here')单击输入收音机时。谢谢!,Fiddle的工作方式和我想的一样,现在要看看它是否能在我的项目中工作。@user1572121使用.children()而不是.find(“ul”)它的通用性和精确性。我根据Lyok更新了我的答案,在我的项目中这对我不起作用,是你的原创。