クラス属性を持つすべてのdivを取得します
$('div[class]')
クラス属性を持たないすべてのdivを取得します
$('div[class!=""]')
このコードは機能しますが、なぜ機能するのかわかりません。上記のコードが機能する場合、クラス属性を持つすべてのdivのコードは
$('div[class=""]')
結果は得られません。
:not()
擬似クラスセレクター で試してください:
_$('div:not([class])')
_
編集
jQueryセレクター の説明:
[attribute]
_[attribute=value]
_[attribute!=value]
_つまり、_div[class=""]
_は、空の値で指定されたclass
属性を持つすべてのDIV要素を選択します。
しかし、最後のセレクタはjQueryの独自のセレクタであり、 CSSセレクタ ではありません。クラスを持たないすべてのDIV要素を選択するには、:not()
を使用する必要があります。
_div:not([class])
_
理解することが重要なのは、emptyクラス属性と要素withoutクラス属性ですが、選択するには異なるテストが必要です。
すべてが異なることを行う多くのテストがあります。テスト用のHTMLは次のとおりです。
<div class="">Empty Class Attribute </div>
<div class="column">Full Class Attribute </div>
<div>No Class Attribute </div>
さて、テストを実行してみましょう(最初の部分は、単にアラートで呼び出されたものを知るのに役立つ文字列であり、そうでなければ意味がありません):
$(document).ready(function(e){
// Outputs "Empty Class Attribute Full Class Attribute"
alert( "div[class] : " + $('div[class]').text() );
// Outputs "Full Class Attribute"
alert( "div[class!=''] : " + $('div[class!=""]').text() );
// Outputs "Empty Class Attribute"
alert( "div[class=''] : " + $('div[class=""]').text() );
// Outputs "No class Attribute"
alert( "div:not([class]) : " + $('div:not([class])').text() );
});
ブラウザにこのコードを表示するには、こちらにアクセスしてください: http://jsbin.com/ijup
ここで、この知識を活用して、ページ上のすべてのdiv
要素を選択し、属性が空で属性がない場合は、次のセレクターを使用します。
$("div[class=''], div:not([class])");
$('div[class=""]')
セレクターは、基本的に次のように読み取ります。 "クラス属性の値として空の文字列を持つすべてのdiv要素を取得します。"-除外空の文字列以外のクラス属性にANY値を持つすべてのdiv要素、およびクラス属性がまったく設定されていないすべてのdiv要素。