是否可以选择具有特定类别的所有元素,但如果它们包含某些.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。
答案 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