如果任何 mdpoptags
具有文本作为变量 a
,我想返回 false
。
我想在没有 each
循环的情况下执行此操作。
var a = 'ABBA'
if ($('.mdpoptag:contains(' + a + ')').length > 0) {
console.log('323');
//return false;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='mdpoptag'>ABBA</div>
<div class='mdpoptag'>ABB</div>
<div class='mdpoptag'>AB</div>
问题:如果 a
是 ABB
或 AB
- 结果为 true。
我需要将整个 a
字符串与整个 mdpoptags
文本进行匹配。
是否可以使用 contains
或 include
... 只是没有 each
循环?
最佳答案
我添加了一些其他示例以使其更加通用。
为了简单起见,假设您要对所有匹配元素执行的操作是 .hide()
。
使用 :contains() 的片段
:
var a = 'ABBA';
// If you want to execute a global action on all your elements, you can do the following:
var matched = $('.mdpoptag:contains(' + a + ')');
if (matched.length) {
matched.hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='mdpoptag'>ABBA</div><!-- ABBA is here -->
<div class='mdpoptag'>ABB</div>
<div class='mdpoptag'>AB</div>
<div class='mdpoptag'>ABBABB</div>
<div class='mdpoptag'>BBABBA</div>
<div class='mdpoptag'>ABBA</div><!-- ABBA is here too -->
这里的问题是 :contains()
也匹配“ABBABB”和“BBABBA”。
⋅ ⋅ ⋅
因此,您可能需要使用 .filter()
来代替:
var a = 'ABBA';
var matched = $('.mdpoptag').filter(function() {
return $(this).text() === a;
});
if (matched.length) {
matched.hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='mdpoptag'>ABBA</div><!-- ABBA is here! -->
<div class='mdpoptag'>ABB</div>
<div class='mdpoptag'>AB</div>
<div class='mdpoptag'>ABBABB</div>
<div class='mdpoptag'>BBABBA</div>
<div class='mdpoptag'>ABBA</div><!-- ABBA is here too -->
有关.filter()的文档
:http://api.jquery.com/filter/
⋅ ⋅ ⋅
另请注意,如果您想为每个元素console()
某些内容,则必须使用循环。
希望有帮助。
关于javascript - 检查任何元素是否有文本 - 没有每个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834959/