检查是否有任何元素有文本 - 没有每个循环

时间:2018-06-13 10:30:42

标签: javascript jquery

如果return false中的任何一个文字为变量mdpoptags,我想a。 我希望在没有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>
&#13;
&#13;
&#13;

问题:如果aABBAB - 结果为真。

我需要将整个a字符串与整个mdpoptags文字进行匹配。

是否可以使用containsinclude ...只是没有each循环?

3 个答案:

答案 0 :(得分:1)

我现在只是猜测,因为我认为你的问题的答案已经存在于你的问题中。

如果您只想显示那些不包含变量a值的div,那么您可以这样做

var a = 'ABBA',
  container = $('.mdpoptag:contains(' + a + ')');
  
if (container.length > 0) {
  container.hide();
}
<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>

答案 1 :(得分:1)

我已经添加了一些其他示例,以使其更通用 我们假设您要对所有匹配元素执行的操作为.hide(),以简化操作。

使用:contains()

的代码段

&#13;
&#13;
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();
}
&#13;
<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 -->
&#13;
&#13;
&#13;

这里的问题是:contains()匹配&#34; ABBABB&#34;和&#34; BBABBA&#34;太

⋅ ⋅ ⋅

因此,您可能希望改为使用.filter()

&#13;
&#13;
var a = 'ABBA';
var matched = $('.mdpoptag').filter(function() {
    return $(this).text() === a;
});
if (matched.length) {
  matched.hide();
}
&#13;
<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 -->
&#13;
&#13;
&#13;

有关.filter()的文档:http://api.jquery.com/filter/

⋅ ⋅ ⋅

另请注意,如果您想为每个元素console() ,则必须使用循环。

希望它有所帮助。

答案 2 :(得分:0)

您的变量内容中存在拼写错误。

&#13;
&#13;
edit
&#13;
var a = 'ABBA';
if ($('.mdpoptag:contains(' + a + ')').length > 0) {
  console.log('found!');
  //return false;
}
&#13;
&#13;
&#13;