【问题标题】:Jquery - find divs with class that contains certain class that has given text valueJquery - 查找包含具有给定文本值的特定类的类的 div
【发布时间】:2020-02-06 13:53:23
【问题描述】:

我需要一些 jquery 帮助。这是我的 HTML 代码:

<div class="searchable"><span class="tag">Cool</span><span class="tag">Beautiful</span></div>
<div class="searchable"><span class="tag">Not Cool</span><span class="tag">Tall</span></div>
<div class="searchable"><span class="something">...</span></div>

我需要找到的是 1) 类名称为“可搜索”的 div 2) 对于这些 div,找到那些具有类“Tag”的 span 元素的 div,因为并非所有可搜索的 div 都有标签类 3) 在任何标签中查找文本值不等于世界“酷”。所以在上面的例子中,应该返回第二个和第三个 div。换句话说,如果任何标签具有文本值 Cool,则不要返回它。而且我需要返回“可搜索”的 div,而不是 span 元素。

我试过这个:

        $('.searchable .tag:textNotEquals("Cool")').each(function () {
            $(this).closest('.searchable').hide();
        });

textNotEquals 是这样实现的:

    $.expr[':'].textNotEquals = $.expr.createPseudo(function (arg) {
        return function (elem) {
            return !$(elem).text().match("^" + arg + "$");
        };
    });

我上面的代码部分工作,只返回第一个匹配项。如果我有多个 div 匹配项,则它不起作用。另外,我希望有一种简单的方法可以做到这一点。我的代码似乎太复杂了。任何帮助深表感谢。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    我很确定这不能单独使用选择器来完成。你必须编造一些东西。

    例如:

    $('.searchable').filter((idx, el) => $(el).find('span.tag').map((idx, el) => $(el).text()).get().indexOf('Cool') === -1);
    

    在英语中,查找所有 class="searchable" 元素,其中没有包含单个单词“Cool”的 &lt;spanclass="tag">` 元素。

    或者,反转逻辑并使用.not

    $('.searchable').not($('span.tag').filter((idx, el) => $(el).text() === 'Cool').closest('.searchable'));
    

    在英语中,查找所有 class="searchable" 元素,但排除那些至少有一个 &lt;spanclass="tag">` 元素包含单个单词“Cool”的元素。

    这两种方法都可以通过进一步的努力来简化

    【讨论】:

    • 感谢代码!第一个似乎对我有用。但是,我无法将变量传递给它。 “酷”这个词是一个变量,但是当我将它更改为实际变量时,它不起作用。 $('.searchable').filter((idx, el) => $(el).find('span.tag').map((idx, el) => $(el).text())。 get().indexOf("' + tag + '") === -1).hide();
    • 我明白了 -- $('.searchable').filter((idx, el) => $(el).find('span.tag').map((idx , el) => $(el).text()).get().indexOf(tag) === -1).hide();
    • 应该可以的。
    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2021-12-16
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多