Jquery 在HREF中隐藏特定文本上的div

Jquery 在HREF中隐藏特定文本上的div,jquery,regex,Jquery,Regex,我见过类似的问题,但它们都是简单的:如果div包含特定的文本,那么就隐藏它。这很有效 在我的例子中,我有一个动态变化的更复杂的结构。它可以是div中的多个div,其中包含一些javascript 在下面的示例中,如果任何元素中包含带有特定ID的href:“?ID=my text”,我需要隐藏一个div(或应用一个带有hide的类) 编辑:我遗漏了一件事,那就是我需要隐藏的顶级div的ID是静态的:“top div”。我只想将文本搜索逻辑应用于“top div”中的div,而不应用于整个页面。您

我见过类似的问题,但它们都是简单的:如果div包含特定的文本,那么就隐藏它。这很有效

在我的例子中,我有一个动态变化的更复杂的结构。它可以是div中的多个div,其中包含一些javascript

在下面的示例中,如果任何元素中包含带有特定ID的href:“
?ID=my text
”,我需要隐藏一个div(或应用一个带有hide的类)


编辑:我遗漏了一件事,那就是我需要隐藏的顶级div的ID是静态的:“top div”。我只想将文本搜索逻辑应用于“top div”中的div,而不应用于整个页面。

您可以使用过滤器代替

$('#top-div').filter(function() {
    return $(this).find('a').toArray().some(function(item) {
        return item.search.toLowerCase().indexOf('id=my-text') !== -1;
    });
}).hide();

如果要直接在匹配元素上应用CSS,只需应用此选择器即可:

[href*=我的文本]{
背景色:#f00;
}




未捕获的语法错误:无效的正则表达式:/?id=my text/:无需重复
您可能不希望在查询字符串搜索中包含问号。可能您的参数的顺序并不总是相同的。我不明白您为什么不使用:
$(“a[href*=”?id=my text'])。parent('div')。隐藏()???看起来不错。添加了对父div的引用。它不需要对父div的引用,它已经瞄准了主播的父div,似乎想要比它高一个级别,不是吗?无论如何,您可以添加一些文档。我是一名经验丰富的开发人员,但仍有一些吞咽整个过程的困难。:)@MyroslavTedoski-它仍然是相同的代码,只需过滤该DIV而不是所有DIV
$.expr[":"].containsNoCase = function(el, i, m) {
    var search = m[3];
    if (!search) return false;

    var pattern = new RegExp(search,"i");
    return pattern.test($(el).text());
};

$(document).ready(function() {
    $("div a:containsNoCase('?id=my-text')").parent('div').hide();
});
$('#top-div').filter(function() {
    return $(this).find('a').toArray().some(function(item) {
        return item.search.toLowerCase().indexOf('id=my-text') !== -1;
    });
}).hide();