2011-07-25 13 views
0

これは私が持っているものです。 liには現在のクラスがありますが、何らかの理由でクラスに追加されていません。jQuery hasClass/addClass Issue

if (jQuery("#sidebar li").hasClass("current")) { 
     jQuery(this).addClass("booyah"); 
    } 
+1

あなたは正しい要素を取得しても、hasClassが実際にtrueを返すかどうか試してみましたか? –

+0

私は 'this'(私が間違っている可能性があります)、あなたの問題はあなたが' this'を理解していないと思いだけ の内側にスコープa)のオブジェクトメソッドを呼び出します - オブジェクトに b)のイベントハンドラ - 呼び出し側に @ユリアンの答えは行く方法ですが、もっと簡単な方法もあります(私の答えを参照してください) – Guard

答えて

4

真かつ簡単な方法:jQuery("#sidebar li.current").addClass('booyah')私はあなたの質問を理解し、あなたはli要素に「booyah」を追加したい場合は (すでに持つ「現在」 )

+0

それは簡単ですが、なぜ私は物事を複雑にしていたのか分かりません。ありがとう。 – kel

+0

うん、jQueryはセレクタとその許容する性質のおかげで非常に強力です - 現在のli =がないとコードは失敗しません) – Guard

6

このポインタは$( "#sidebar li")要素を参照していません。

if (jQuery("#sidebar li").hasClass("current")) { 
     jQuery("#sidebar li").addClass("booyah"); 
    } 
2

最初にサイドバーを変更してみてください。私は「これ」はあなたが思うものだとは思わない。

var $sideBar = jQuery("#sidebar li"); 

if ($sideBar.hasClass("current")) { 
     $sideBar.addClass("booyah"); 
    } 
2

いけないあなたはthis#sidebar liを表しコンテキストではないようthisを使用しています。代わりに、変数にjQueryセレクタを統合し、変数を再利用してください。これは、問題の要素を2回ではなく1回だけ検索する必要があるため、効率が向上します。ここで

var sidebarli = jQuery("#sidebar li"); 
if (sidebarli.hasClass("current")) { 
    sidebarli.addClass("booyah"); 
} 
0

あなたが行く:

var $li = jQuery("#sidebar li"); 

if ($li.hasClass("current")) { 
     $li.addClass("booyah"); 
    }