5

特定のクラスを持つすべての要素を選択することはできますが、特定の要素が含まれている場合は選択できません.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を含むを含めないことです。

4

5 に答える 5

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

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

ちなみに、epascarelloの質問に答えるために、これは要素内の任意の部分文字列に一致します。あなたの数が10に達すると、それはそれに一致し、それも割引します。それが問題になる場合は、カスタムセレクターまたは.filter()関数が必要になります。

于 2012-11-20T18:58:47.323 に答える
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)");​
于 2012-11-20T19:01:07.913 に答える
0

あなたはこれを試すことができます:-

$(".test:not(:contains('0'))")
于 2012-11-20T19:00:57.267 に答える
0

:containsセレクターを使わない方法はこちら

.filter()機能が使えます

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

フィドルをチェック

于 2012-11-20T19:01:08.523 に答える
0

これは、目的のテキストを取得する方法の1つでもあります:http://jsbin.com/arifuv/1/edit

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

console.log(aa);

// results are ---> 1234
于 2012-11-20T19:08:46.977 に答える