これは私が持っているものです。 liには現在のクラスがありますが、何らかの理由でクラスに追加されていません。jQuery hasClass/addClass Issue
if (jQuery("#sidebar li").hasClass("current")) {
jQuery(this).addClass("booyah");
}
これは私が持っているものです。 liには現在のクラスがありますが、何らかの理由でクラスに追加されていません。jQuery hasClass/addClass Issue
if (jQuery("#sidebar li").hasClass("current")) {
jQuery(this).addClass("booyah");
}
このポインタは$( "#sidebar li")要素を参照していません。
if (jQuery("#sidebar li").hasClass("current")) {
jQuery("#sidebar li").addClass("booyah");
}
最初にサイドバーを変更してみてください。私は「これ」はあなたが思うものだとは思わない。
var $sideBar = jQuery("#sidebar li");
if ($sideBar.hasClass("current")) {
$sideBar.addClass("booyah");
}
いけないあなたはthis
は#sidebar li
を表しコンテキストではないようthis
を使用しています。代わりに、変数にjQueryセレクタを統合し、変数を再利用してください。これは、問題の要素を2回ではなく1回だけ検索する必要があるため、効率が向上します。ここで
var sidebarli = jQuery("#sidebar li");
if (sidebarli.hasClass("current")) {
sidebarli.addClass("booyah");
}
あなたが行く:
var $li = jQuery("#sidebar li");
if ($li.hasClass("current")) {
$li.addClass("booyah");
}
また、これを試すことができます。 http://jsfiddle.net/shaneburgess/STZUb/
$.each(jQuery("#sidebar li"),function(){
if (jQuery(this).hasClass("current")) {
jQuery(this).removeClass("current").addClass("booyah");
}
});
あなたは正しい要素を取得しても、hasClassが実際にtrueを返すかどうか試してみましたか? –
私は 'this'(私が間違っている可能性があります)、あなたの問題はあなたが' this'を理解していないと思いだけ の内側にスコープa)のオブジェクトメソッドを呼び出します - オブジェクトに b)のイベントハンドラ - 呼び出し側に @ユリアンの答えは行く方法ですが、もっと簡単な方法もあります(私の答えを参照してください) – Guard