9 つの異なる状態を持つ 1 つの画像と、さまざまな状態を表示するクラスとして設定された適切な background-position ルールがあります。:hover 疑似セレクターは使用できません。変更される背景画像は、ホバーされている要素と同じではないためです。私はこのようにクラスを定義しました:
#chooser_nav {width:580px; height:38px; background:transparent url(/assets/images/chooser-tabs.jpg) 0 0 no-repeat; margin-left:34px;}
#chooser_nav.feat {background-position:0 0;}
#chooser_nav.inv {background-position:0 -114px;}
#chooser_nav.bts {background-position:0 -228px;}
#chooser_nav.featinv {background-position:0 -38px;}
#chooser_nav.featbts {background-position:0 -76px;}
#chooser_nav.invfeat {background-position:0 -152px;}
#chooser_nav.invbts {background-position:0 -190px;}
#chooser_nav.btsfeat {background-position:0 -266px;}
#chooser_nav.btsinv {background-position:0 -304px;}
次に、jQuery を使用して、前のクリック イベントに基づく一連のホバー ルールを作成します (ここでは宣言されていない "cur" 変数は別の場所で適切に宣言されています)。
$("#featured_races a").hover(function(){
cur == "feat" ? $("#chooser_nav").attr("class", cur) : $("#chooser_nav").attr("class", cur+"feat");
}, function(){
$("#chooser_nav").attr("class", cur);
});
$("#invitational_races a").hover(function(){
cur == "inv" ? $("#chooser_nav").attr("class", cur) : $("#chooser_nav").attr("class", cur+"inv");
}, function(){
$("#chooser_nav").attr("class", cur);
});
$("#behind_the_scenes a").hover(function(){
cur == "bts" ? $("#chooser_nav").attr("class", cur) : $("#chooser_nav").attr("class", cur+"bts");
}, function(){
$("#chooser_nav").attr("class", cur);
});
したがって、Moz および WebKit ブラウザーでは、これは正常に機能します。クラスが適用され、それに応じて背景画像が変更されます。IE7 でも動作します。ただし、IE6 では、背景画像は変更されません。クラスは適切に適用されます。MS の Web 開発ツールの DOM ビューアーでこれを確認しました。したがって、jQueryは機能しています。クラスは適用されていますが、目に見える変化はありません。
私はここでちょっと困惑しています...助けてください、クラックオーバーフロー...あなたは私の唯一の希望です...
編集: className と setAttribute に関する限り... クラスが変更されています。attr("class", cur) は機能しています。ただし、クラスが変更されると、結果のルールは視覚的に適用されません...しかし、クラスの変更が発生しています。
編集 2: jQuery のクラス固有のメソッドについて: 私は元々コードにそれらを持っていましたが、結果は同じでした。繰り返しますが、問題はクラスが要素に適用されないことではありません...これは発生していることが確認されています。クラスが要素上にあると、何らかの理由で、要素がそのクラスに設定された CSS ルールに従っていないということです...