質問: jquery でDOM要素をクラス名で指定するとき、クラス名にスペースが含まれているとうまく指定できません ``` first second ``` このようなHTMLをが存在した時 `$("div.A.C").html()` と指定しても `first` が帰ってきてしまいます `second` を取得するにはどのようにすればよいのでしょうか?
回答: HTMLのclass属性には、スペースで区切った複数のクラスを指定することができます。 つまり、`` はA・B・Cの3つのクラス、`` はA・Cの2つのクラスとして解釈されます。クラス「A B C」という意味にはなりません。そしてCSSやjQueryのセレクタ記法で `$("div.A.C")` と書いた場合、AとBの両方のクラスを持った `` 要素という意味ですから、`` `` の両方に該当します。 この場面で `` だけを選択するには、「クラスBを持っていない」という条件も付ける必要があります。それがemasakaさんの書かれている `:not(.B)` という記述です。 属性全般で使えるセレクタを使えば、スペースも含めてマッチさせることもできますが、class属性の使い方としては適切ではないでしょう。