查找不包含特定字符串的所有元素

时间:2012-11-20 18:57:04

标签: 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 divList = $(".test").toArray();
var divLength = divList.length;

我想对此代码执行的操作是不包含<div>,其中包含0。

5 个答案:

答案 0 :(得分:11)

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

http://api.jquery.com/contains-selector/

顺便说一下,要回答epascarello的问题,这将匹配元素内的任何子字符串ANYWHERE。如果你的数字达到10,那么它也会匹配并打折。如果您遇到问题,则需要自定义选择器或.filter()功能。

答案 1 :(得分:3)

快速谷歌将其带到了表面http://forum.jquery.com/topic/jquery-opposite-of-contains

归结为此

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

修改

@jbabey的测试显示接受的答案更快,所以使用

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

作为epascarello答案的后续内容,以下选择器将完全匹配(默认情况下,这不包含在jQuery中!)

$.expr[":"].econtains = function(obj, index, meta, stack){
    return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
}

要进行完全匹配,您现在可以使用

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

答案 2 :(得分:0)

你可以试试这个: -

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

答案 3 :(得分:0)

这是一种不使用:contains选择器

的方法

您可以使用.filter()功能

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

<强> Check Fiddle

答案 4 :(得分:0)

这也是获取所需文字的方法之一:http://jsbin.com/arifuv/1/edit

var aa = $('.test').filter(':not(:contains(0))').text();

console.log(aa);

// results are ---> 1234