【发布时间】: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