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