0

クリック時にメニューアイコンとテキストの色を変更しようとしています。

私のメニューでは、各 <li>要素にハイパーリンクタグがあり、その下に2つの子があり、クリックする<span class="icon"><div class="icon">クラスを次のように変更する必要があります。

<span class="icon active"> <div class="icon active">次のメニュー項目をクリックすると、このアクティブなクラスを削除する必要があります

JSフィドル

HTMLコード

<div id="grid">
    <div id="menuBase">
      <div id="menu">
      <ul>
        <li><a href="#Page1" ><span class="icon" id="home"></span><div class="icon" id="mtext">Menu1&nbsp;&nbsp;</div></a></li>
        <li><a href="#aboutPage"><span class="icon" id="about"></span><div class="icon" id="mtext">Menu2</div></a></li>
        <li><a href=""><span class="icon" id="soln"></span><div class="icon" id="mtext">Menu 3</div></a></li>
        <li><a href="#"><span class="icon" id="lab"></span><div class="icon" id="mtext">Menu4</div></a></li>
        <li><a href="#"><span class="icon" id="port"></span><div class="icon" id="mtext">Menu5</div></a></li>
        <li><a href="#"><span class="icon" id="contact"></span><div class="icon" id="mtext">Menu6</div ></a></li>
      </ul>
      </div>
    </div>
</div>
​

CSSコード

#grid{
    width: 750px;
    margin:0 auto;   
}
#menuBase{
    background: #fff;
    width:100%;
    height:44px;
    -webkit-border-radius: 90px 90px 0 0;
    -moz-border-radius: 90px 90px 0 0;
    border-radius: 90px 90px 0 0;
    border-right:2px solid #fff;

}


#menu{
    background: #E1E1E3;
    width:100%;
    height:100%;
    -webkit-border-radius: 99px 99px 0 0;
    -moz-border-radius: 99px 99px 0 0;
    border-radius: 99px 99px 0 0;
    border-right: 1px #fff solid;
    border: 2px    #ccc solid;
    border-right: none;
    border-bottom: none;
}

#hrhead{
    background: #cccccc;
    height: 3px;
    -webkit-margin-before:0;
    -webkit-margin-after:0;
    border-bottom: 1px #ffffff solid;
}

#hrfoot{
    background: #cccccc;
    height: 3px;
    -webkit-margin-before:0;
    -webkit-margin-after:0;
    border-top: 1px #ffffff solid;
}

#menu ul{
    float:left;
    width:100%;
    padding-left:43px;
    margin:0;
    list-style-type:none;
}

#menu li{
    display: block;
    float: left;
    width:40px;
    height: 25px;
    margin-right: 68px;
    margin-top: 11px;
}

#menu li:last-child{
    margin-right: 0px;
}

.icon{
    height:25px;
    width: 40px;
    display: block;
    color:#777777;
}

#mtext{
    height:27px;
    width: 80px;
    display: block;
    margin: 11px 0 0 -20px;
    text-align: center;

}
#menu li a{
    text-decoration:none;
}
#menu li a:hover #mtext{
    color:#DC0000;
}
#menu li a:hover .icon{
    background-position-y:24px;
}

#home{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

#about{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

#soln{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

#lab{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

#port{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

#contact{
    background: url(http://i47.tinypic.com/2nroe9k.png)0 0;
}

.active{
    background-position-y:24px !important;
    color:#DC0000 !important;
}
​

Jquery [くそー私は迷子になっています]:

$("#menu > ul > li > a").click(function(e){
    e.preventDefault(); 

});

​
4

3 に答える 3

2

デモ:http://jsfiddle.net/VLXxR/8/

$("#menu > ul > li > a").click(function(e){
     e.preventDefault(); 
     $("#menu .icon").removeClass("active");
     $(this).children(".icon").addClass("active")

  });
于 2012-11-02T12:33:52.267 に答える
1

デモ:http://jsfiddle.net/VLXxR/7/

 $("#menu > ul > li > a").click(function(e){
     e.preventDefault(); 
     $("#menu .icon").removeClass("active");
     $(this).find(".icon").addClass("active")

  });

removeClassのドキュメントを確認してください-http ://api.jquery.com/removeClass/

于 2012-11-02T12:22:21.630 に答える
1

あなたのjsはこのようになります、FIDDLE

 $("#menu > ul > li > a").click(function(e){
     e.preventDefault();
     $("#menu > ul > li > a > div,#menu > ul > li > a > span").removeClass('active');

     $('div',this).addClass('active');
     $('span',this).addClass('active');
 });
于 2012-11-02T12:26:36.587 に答える