0

Jqueryの12日目に:not()セレクターに遭遇しました。

テキストと、より多くのテキストを含むクラスを持つスパンを含む1つを除くすべてのH1を選択したいと思います。構造を理解しやすくするために、いくつかのクエリと結果を次に示します。

クエリ1:

$('.block > section')

結果:

[
<section class=​"businessapproaches">​…​&lt;/section>​
, 
<section class=​"abstract">​…​&lt;/section>​
, 
<section class=​"workexperience">​…​&lt;/section>​
, 
<section class=​"academic">​…​&lt;/section>​
, 
<section class=​"skillstable">​…​&lt;/section>​
]

クエリ2

$('.block > section > h1')

結果:

[
<h1>​Business Approach​&lt;/h1>​
, 
<h1>​Abstract​&lt;/h1>​
, 
<h1>​Work Experience​&lt;/h1>​
, 
<h1>​Academic Experience​&lt;/h1>​
, 
<h1>​…​&lt;/h1>​
]

ご覧のとおり、最後のテキストには除外する簡単なテキストがありません。だからあなたはそれが何であるかを知っています、ここにそれがあります:

[
<h1>​
"Skills Table : "
<span class=​"skillstablevisibility">​Technologies / Compliance / Certifications​&lt;/span>​
</h1>​
]

の使用を提案しようとしている方には、非常に感謝していますが、明日追加のセクションを追加して、を否定する可能性があるため、この問題:lastのセレクターの使用方法を学びたいと思います。新しいセクションを追加した後でも、「スキルテーブル」を除くすべてのセクションを選択する必要があることを保証できるので、あなたの助けが無駄になることはありません。:not():last

これらは私がこれまでに試したことです:

そのインデックスによる試み:

   $('.block > section > h1:not(:'$('.block > section > h1:nth-child(5)')')')

その名前で試してみてください:

$('.block > section > h1:not(:"Skills Table : "
    <span class=​"skillstablevisibility">​Technologies / Compliance / Certifications​&lt;/span>')')
4

1 に答える 1

4

できるよ

$('.block > section > h1:not(:has("span.skillstablevisibility"))') 

内部にh1あるものは選択されません。span.skillstablevisibility

デモ: http: //jsfiddle.net/joycse06/uZjJh/

アップデート

@Christian Vargaが上記でコメントしたように、上記のセレクター式は高価であるため、マークアップの作成を制御できる場合は、クラスをh1それ自体に追加して、次のようなセレクターを許可できます。

$('.block > section > h1:not(.skillstable)');

どちらがパフォーマンスが向上します。

また、マークアップを変更できない場合は、とにかく最初のマークアップをいつでも使用できます。

于 2012-06-22T05:10:39.033 に答える