3
<div id="main">
 <div class="a"></div>
 <div class="b"><p>not me</p></div>
 <div class="b"></div>
 <div class="b"></div>
 <div class="c"></div>
</div> 

all divs with class b子が誰であるかを除いて選択するセレクターをどのように書くことができます<p>not me</p>か?

4

6 に答える 6

10
$('div.b:not(:has(p))').........

または読み取り可能なバージョン

$('div.b').filter(function(){
    return !$(this).find('p').length;
});

コンテンツも一致させたい場合:

$('div.b').filter(function(){
    return $(this).find('p').text() !== "not me";
});

ライブデモ

于 2012-06-13T09:58:55.633 に答える
3

デモ http://jsfiddle.net/46nC5/1/

あなたは特にあなたのために作られたデモを探しているclass bので、それ故に共有します。

このデモでは、私ではなくフェードアウトし、残りはそのままになります。

つまり、:not+:hasでそれを行うことができます

コード

$('div.b:has(p)').​

また

$('div.b:not(:has(p))')
于 2012-06-13T10:01:51.307 に答える
1
$('div.b').filter(function () {
    return $(this).find('p:contains(not me)').length == 0;
})

jsFiddle デモ

于 2012-06-13T10:05:02.110 に答える
1

これにより、 class="b"を持ち、p (段落)を持たない2 つの divが得られます。

ライブデモ

$('div.b:not(:has(p))')
于 2012-06-13T10:12:14.570 に答える
1

私が通常行う最善の方法:

$('div.b').filter(function () {
   return !$(this).hasClass('notMe');
});


<div id="main">
     <div class="a"></div>
     <div class="b notMe"><p>not me</p></div>
     <div class="b"></div>
     <div class="b"></div>
     <div class="c"></div>
</div> 
于 2012-06-13T10:21:06.660 に答える
0

そして、ここに別のものがあります

$("div.b:contains('not me')")

編集:申し訳ありませんが、ここではありません

$("div.b:not(:contains('not me'))")
于 2012-06-13T10:05:58.003 に答える