-1

左側のナビゲーションでリンクを駆動するトップ ナビゲーション リンクがあります。上部のナビゲーションには、多数のトピックが含まれています。各トピック リンクをクリックすると、そのトピックに関連するリンクが左側のナビゲーションに表示されます。したがって、上部のナビゲーションのトピックをクリックすると、残りが青である間に色を赤に変更したいのですが、別のタイトルがクリックされるとすぐに、以前にクリックしたリンクの色を青に戻し、新しくクリックして赤い色を取得します。jqueryでこれを行うにはどうすればよいですか? クラスの追加とクラスの削除、および css の使用が機能しません..助けてください..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>MY C# Notes</title>     
    <style type="text/css">
    body,
    html {margin:0; padding:0;color:#000;background:#a7a09a;}
    #wrap {width:1050px;margin:0 auto;background:#99c;}
    #header {padding:5px 10px;background:#ddd;}
    h1 {margin:0;}
    #nav {padding:5px 10px;background:#c99;}
    #nav ul {margin:0;padding:0;list-style:none;}
    #nav li {display:inline;margin:0;padding-right:15px;}
    #main { float:right;width:780px;padding:10px;background:#9c9;min-height:600px;}
    h2 {margin:0 0 1em;}
    #sidebar {float:left;width:230px;padding:10px;background:#99c;min-height:600px;}
    #footer {clear:both;padding:5px 10px;background:#cc9;}
    #footer p { margin:0;  }
    * html #footer {height:1px;}
    .high{color:red}
    a.loader { color: blue; }    
    </style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript"> 
$(document).ready(function() {   
$('a.loader').on('click', function(e) {
e.preventDefault();
    $('#sidebar').load($(this).attr('href'));
            $("a.loader").removeClass("high");
            $(this).addClass("high");});
});

</script>
<div id="wrap">
    <div id="header"><h1>My C# Notes and Exercises</h1></div>
    <div id="nav">
        <ul>
            <li><a class="loader" href="topic1.html">Topic1</a></li>
            <li><a class="loader" href="topic2.html">Topic2</a></li>
            <li><a class="loader" href="topic3.html">Topic3</a></li>
            <li><a class="loader" href="topic4.html">Topic4</a></li>
            <li><a href="/">LocalBrowser</a></li>
        </ul>
    </div>
    <div id="main">
    </div>
    <div id="sidebar"></div>
    <div id="footer">
        <p>C# Online Tutorials</p>
    </div>
</div>
</body>
</html>
4

3 に答える 3

1

ローダー クラスの青が赤を上書きしているので、これを使用します。

.high{color:red !important}

http://jsfiddle.net/AZqUx/

于 2012-08-20T00:09:03.623 に答える
1

あなたのCSSクラス.loaderはより優先されてい.highます。これは次の方法で修正できます。

!important- の宣言への追加.high:.high {color: red !important;}

-css 内の宣言の順序を入れ替える:a.loader { color: blue;} a.high { color: red; }

.loader-または追加時に削除.high:

$(document).ready(function() { 
    $('a.loader').on('click', function(e) {
        e.preventDefault();
        $('#sidebar').load($(this).attr('href'));
        $("a.high").not(this).removeClass("high").addClass('loader');
        $(this).removeClass('loader').addClass("high");
    });
});
于 2012-08-20T00:14:28.737 に答える
1

現在、関連する 2 つの CSS ルールがここにあります。

a.loader { color: blue; }    
.high { color: red; }

CSS の最も重要な原則の 1 つは、より具体的なルールがあまり具体的でないルールよりも優先されるということです。上記の 2 つのルールのうち、1つ目は<a>class をloader持つすべての要素に適用され、2 つ目は class を持つすべての要素に適用されますhigh。最初のルールはより具体的 (タグとクラスの説明を含む) であるため、優先color: red;され、他のルールのルールをオーバーライドします。これを修正する最も簡単な方法は、2 番目のルールをより具体的にすることです。

a.loader { color: blue; }    
a.high { color: red; }

のルールa.highは後から宣言するのでそちらが優先されます。ただし、実際には 2 番目のルールを最初のルールよりも具体的にすることで、これを将来的に保証することができます。これが要素の子要素で機能するためにのみ必要であると仮定すると、これ<div id="nav">を行うことができます:

a.loader { color: blue; }    
#nav a.high { color: red; }

これにより、両方の宣言を自由に移動でき、予期しない動作の変化を得ることができません。これが機能する理由について疑問がある場合は、CSS 固有性ルールが役立ちます。:D

于 2012-08-20T00:15:26.750 に答える