2012-05-11 21 views
4

要素にその属性がない場合、その属性を要素に追加するにはどうすればよいですか?まだ属性がない場合は、属性を追加してください

if (' this does not have class=selected') { 

    $(this).addClass('selected'); 
} 
+1

クラスを具体的に意味するのか、それとも属性ですか? .addClass()を何度でも呼び出すことができるからです。 – n8wrl

+0

それは重複を追加しませんか? – David542

+0

重複していても問題ありません。要素がクラスを持っているかそうでない要素があります。 JavascrciptとDOMの観点から同じクラスが複数回ある場合は、クラスがあります。 –

答えて

3

を探しています:) http://api.jquery.com/category/css/

。すでに存在する場合は、2回追加されません。

$(this).addClass('selected'); // will only add the class if it doesn't exist 

私はクラスの最初のテストがこれ以上効率的ではないかと疑います。

ライブデモ:http://jsfiddle.net/2sLd5/

4
if(!$(this).attr('name')) { 
    $(this).attr('name', 'value'); 
} 

それはそれを行うべきです。

+0

私はちょうど私が欲しいものですが、これを試してみましたが、(!$(this).attr( 'placeholder')){ $(this).attr( 'placeholder'、 'c' ); } –

2

jQueryのドキュメントはあなたの友人です!あなたは、おそらくあなたは、クラスについて、具体的話をしている場合は、単に先に行くと、それを追加しHasClass

http://api.jquery.com/hasClass/

$('#mydiv').hasClass('foo') 
0

あなたは属性ではないセレクタを使用することができます。前に述べたように、あなたはそれを追加し、反対クラスあなたのチェックを追加したい場合、これは、クラスのためではなく、もちろん

if($('#elemid[class!="myclass"]').length) { 
    $('#elemid').addClass('otherClass'); 
} 

あらゆる属性のためだけではなく機能します。それに害はありません。

0

クラスを追加する前にクラスが既に存在するかどうかを確認する必要はありません。 jQueryソース(https://github.com/jquery/jquery/blob/master/src/attributes.js、addClassを検索)を調べると、クラスがすでに存在する場合、addClassは何も行いません。したがって、最初にチェックする必要はありません。

関連する問題