获取所有包含特定后代的元素

时间:2018-10-18 16:05:55

标签: javascript jquery

我正在尝试使用jQuery contains()方法遍历包含类<li>的所有.fas标记,并对每个标记执行一些操作。

$('li:contains(".fas")').each(function (index) {
    //stuff
}

我一直在获取包含未定义的参考错误。我使用这种方法不正确吗?

3 个答案:

答案 0 :(得分:1)

您想要has()

$('li:has(".fas")').each(function (index) {
    //stuff
}

https://api.jquery.com/has/

答案 1 :(得分:1)

另一种方法是翻转逻辑。

$('.fas').closest('li');

您可以找到所有fas,然后找到其父项lis。

答案 2 :(得分:-1)

您的疑问含糊不清,让我难以回答这个问题。

首先,

$('li.fas') 

对欺骗引擎说:获取所有具有类fas的元素,然后将其简化为li的元素(具有该类)

这之间有一个空格:

$('li .fas')

获取所有具有类fas的元素,然后简化为li元素的后继元素。

$('li>.fas')

获取所有具有类fas的元素,然后将其归类为li元素的直接子元素。

另一个答案带有.has(),所以我不再重复。

过滤器:(在这种情况下,基本上与:has()相同

$('li').filter(function(){
    // reduce the li set; return true when a descendant has the 'fas' class
    return !!$(this).find('.fas').length;
});

更多有关上下文的信息:https://stackoverflow.com/a/16423239/125981