Javascript 查找所有不带'的元素;不包含某个字符串

Javascript 查找所有不带'的元素;不包含某个字符串,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,是否可以选择具有特定类的所有元素,但如果它们包含特定的.text(),则不能选择 这是我到目前为止所拥有的- <div class="test">0</div> <div class="test">1</div> <div class="test">2</div> <div class="test">3</div> <div class="test">4</div> var

是否可以选择具有特定类的所有元素,但如果它们包含特定的
.text()
,则不能选择

这是我到目前为止所拥有的-

<div class="test">0</div>
<div class="test">1</div>
<div class="test">2</div>
<div class="test">3</div>
<div class="test">4</div>

var divList = $(".test").toArray();
var divLength = divList.length;
0
1.
2.
3.
4.
var divList=$(“.test”).toArray();
var divLength=divList.length;
我想对这段代码做的是不包括带有0的

$('.test').not(':contains(0)')

顺便说一句,为了回答epascarello的问题,这将匹配元素中的任何子字符串。如果你的数字增加到10,它将匹配和折扣,以及一个。您需要一个自定义选择器或一个
.filter()
函数,如果这是您的问题。

您可以尝试以下方法:-

$(".test:not(:contains('0'))")

一个快速的谷歌将这一点浮出水面

归结起来就是这个

$(".test:not(:contains('0'))")
编辑

@jbabey的测试表明,接受的答案更快,所以请使用该选项

$(".test").not(":contains(0)");
作为epascarello答案的后续,下面的选择器将进行精确匹配(默认情况下,jQuery中不包含此选项!)

要进行精确匹配,现在可以使用

$(".test").not(":econtains(0)");​

这里有一个不使用
:包含
选择器的方法

您可以使用
.filter()
函数

$('.test').filter(function(){
    return $(this).text().indexOf('0') < 0 ;
});
$('.test').filter(函数(){
返回$(this).text().indexOf('0')<0;
});

这也是获取所需文本的方法之一:


您还可以直接访问jQuery对象上的
.length
。如果其中一个div在文本中的任何位置都有
0
,则会出现问题。据我所知,
:contains
不能接受regex.+1,比单选择器语法(至少在chrome上)快得多@jbabey我一点也不奇怪——解析选择器意味着jQuery引擎需要额外的工作才能获得相同的结果。当然,在现实世界中,不太可能有任何明显的区别。+1表示正确答案,并抵消随机无评论的向下投票。@jbabey:-Thanx很多。我之前误解了这个问题,也许这就是我被否决的原因:(
$('.test').filter(function(){
    return $(this).text().indexOf('0') < 0 ;
});
var aa = $('.test').filter(':not(:contains(0))').text();

console.log(aa);

// results are ---> 1234