2011-12-04 16 views
1

ここでは本当に困惑しています。私はホバー対象にaddClass('test')をやろうとしている...私のjQueryのは、次のようになります。予期せぬ結果を返すjQuery addClass()

<li id="menu-events">

へ:

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { 
    $('#nav-main ul li').addClass('test'); 
    $(this).find('.dropdown').stop(true,true).slideToggle('slow'); 
    $('#nav-main ul li').removeClass("test"); 
}); 

リターンが、しかし、これから行くHTMLですこの:

<li id="menu-events" class="">

任意のアイデアなぜですか?

答えて

4

。空の場合でもjQueryはclass属性を削除しません。ホバー用の他のコールバック関数が欠けているようです - あなたはロールアウト時にクラスを削除したいですか? landonsからコードの

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { // onRollOver 
    $('#nav-main ul li').addClass('test'); 
    $(this).find('.dropdown').stop(true,true).slideDown('slow'); 
}, function() { // onRollOut 
    $('#nav-main ul li').removeClass("test"); 
    $(this).find('.dropdown').stop(true,true).slideUp('slow'); 
}); 
+0

それはそれです。だから今は愚かで明白です。 – Brian

+0

自分を打ち負かさないでください。まったく同じミスをしたことはないと言いたいのですが) – landons

0

よくクラスを追加してクラスを削除しています。何が起こると思いますか? jqueryが空のクラス属性を削除することを期待していますか?

あなたは任意の空のクラス属性を削除するには、次を実行することができます:あなたが追加することと同じ機能でクラスを削除している

$('*[class=""]').removeAttr('class');

+0

おそらくウル私の後に指摘された土地のような間違いをして – Baz1nga

1

ビル、あなたはthisを使用して、よりそれを簡素化し、何度も何度も同じセレクタを実行しないようすることができます:あなたがより多くのこのような何かをしたいようだ

//#nav-main dropdown effects     
$('#nav-main ul li').hover(function() { // onRollOver 
    $(this).addClass('test').find('.dropdown').stop(true,true).slideDown('slow'); 
}, function() { // onRollOut 
    $(this).removeClass("test").find('.dropdown').stop(true,true).slideUp('slow'); 
}); 
+0

いいですよ。クラスは単なるテストだったと思っていたが、あなたは正しい。それ以外の場合は、ALL liにクラスを追加します。ほとんどの場合、これはあなたが望むものではありません。 – landons

関連する問題