2012-01-28 14 views
10

jQueryを使用してクラスがない場合に要素を選択する方法を教えてください。jQuery:クラス名がない場合にのみ要素を選択

私は、html作成者が要素にクラスを追加することで、デフォルトのjQueryアクションをオーバーライドできるページを作成しています。それはどんなクラスでもすべきです。

だから、マークアップは次のようになります。それはクラスを持っていないため

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

私は2番目のリスト要素を選択するために、jQueryのをしたいと思います。

私は.hasClass()を見ましたが、特定のクラス名が必要と思われます。

ありがとうございます! li:not([class])"not selector"を使用して、http://jsfiddle.net/aMC5X/

最初の部分:$('li').not('li[class]')

答えて

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

パーフェクト!これは私が望んでいたことだけでした。 –

+0

私は助けてうれしいです。あなたの質問の真の答えなら、左のチェックボタンをクリックして私の答えを受け入れることができます:) –

2

これはことを行う必要がありますウィ"has attribute"には属性を一切持たないli要素があります。

li[class=""]は、属性が空の文字列に設定されているすべてのli要素を検出します。

+1

あなたの第二 'li'タイプセレクタは冗長です。 –

+0

真。そして、私の解決策も他のxDよりも遅いです。少なくとも私は今日何か新しいことを学んだ – clime

+0

どうにかして、:not属性を持つ単一のセレクタがこれより速く実行されると思います。私はどこか読んでいました.NotソリューションはDOMを2回通過する必要があると私は推測しています。 –

8

これはそれを行う必要があります:

$('li:not([class]),li[class=""]') 

デモを

+0

面白い。 2番目の要素は、 "no class"に空のクラス名を持つものを含めることです。それはおそらく良いアイデアだ - あなたは決して知らない。 –

+0

もし私があなたに与えたjsfiddleで遊んでいれば、何が起こっているのかを第二の部分で知ることができ、あなたの状況にそれが必要かどうかを決めることができます。 – nnnnnn

1

あなたはこれを使用することができます:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
}