2

やあ皆さん、これは私を夢中にさせます。スタイルシートで次のように定義しました。

ul#menuCnt li a {
   color:"red";
}

ホバー効果を作成したい場合、jquery を使用しても色は変わりません。

$("ul#menuCnt li a").hover(function() {
        $(this).addClass("brown");
    }, function() {
        $(this).removeClass("brown");
    });

私は本当に混乱しています。CSS スタイルシートで色を定義しないと、hovereffect が機能します。

あなたが私を助けてくれることを願っています。皆さんはjqueryとcssを学ぶことで私をとても助けてくれました:)

ありがとうございました!

4

6 に答える 6

10

css の優先順位に従って、クラス .brown が css ファイルで次のように定義されている場合:

.brown{}

内部のルールは、# セレクターの同じルールをオーバーライドしません。

!importantキーワードを使用してそれらをオーバーライドできます。

.brown {
    color: brown !important;
}

これはここでは最善の解決策ではありませんが、うまくいきます... !important を使用しないほど、コードが読みやすくなります。

http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.htmlを参照してください。

于 2009-09-18T12:03:37.513 に答える
2

CSSに.brownセレクターはありますか? また、aタグには非常に優れた:hoverセレクターが組み込まれているため、悪い選択になる可能性があります。

于 2009-09-18T11:56:30.867 に答える
2

これを行うためにcssを使用する際の問題について言及しているとは思わないので、試してみませんか:

ul#menuCnt li a:hover {
   color:"brown";
}

編集:それはアンカーであるため、実際にはie6で動作するはずです:) JavaScriptを使用して実行するよりもはるかに高速です。

于 2009-09-18T11:57:30.537 に答える
2

ここには非常に具体的な要素指定子があります。これは単純な .brown クラス セレクターよりも重要であると考えられているため、あまり効果がありません。

詳細については、たとえばこのサイトを参照してください

于 2009-09-18T11:59:02.437 に答える
1

CSS 疑似クラスを使用しないのはなぜ:hoverですか? 例えば:

#menuCnt li a {
    color: "red";
}

#menuCnt li a:hover {
    color: "brown";
}

また、セレクターで「UL」を使用する必要はありません。ID 属性は DOM 内で一意でなければならないため、ページ上に ID "menuCnt" を持つ他の要素が存在することはありません。

于 2009-09-18T11:57:41.643 に答える
0

IE / FFでいくつかのテストを行ったところ、スタイルシート(ul#menuCnt)に要素のIDを含めると、少なくとも私が採用したメソッド(toggleClass、addClass、removeClassなど)では、JQueryがそのスタイルをオーバーライドできないことがわかりました。

(スタイルシートでIDを指定する代わりに)タグの要素にクラスを割り当てると、JQueryでそれをオーバーライドできます。

スタイルからIDを削除すると、JQueryでオーバーライドできます(実際には有用ではありませんが、動作を示すのに適しています)。

実際、スタイルシートにIDを残し、タグ内に別のクラスを割り当てようとすると、スタイルシートにIDに関連付けられたクラスが表示されます。

注:Vincentの投稿は、なぜこの動作が見られるのかを示唆しています。

また、CSSで:hoverを使用するというexhumaの提案にも同意します。

于 2009-09-18T20:37:02.880 に答える