单击隐藏/显示元素并更改CSS

时间:2012-12-11 12:13:10

标签: javascript jquery css

我正在尝试构建一个我有一些链接的页面,当点击它们时,它会在同一页面上显示一个文本。我用javascript / jQuery完成了它,它工作正常。

我正在尝试做的工作是更改活动链接的布局。我之前关于这个问题的问题已经找了几个小时,但是因为我是javascript / jQuery的新手,我有点迷失了

这是FIDDLE 。你会看到我做了什么。我需要有关活动链接布局的帮助。例如,我希望为链接文本获取另一种颜色,以便我们知道哪个链接处于活动状态

这是我的HTML代码:

<div id="fond_soins">
    <a class"asoins" href="javascript:showonlyone('onglet1');" >
        <span class="icon">
            <div id="acu1">
                <h3 class="onglet">Titre 1</h3>
            </div>
    </a>
    <a class"asoins" href="javascript:showonlyone('onglet2');" >
        <span class="icon">    
            <div id="acu2">
                <h3 class="onglet">Titre 2</h3>
            </div>
    </a>
    <a class"asoins" href="javascript:showonlyone('onglet3');" >
        <span class="icon">
            <div id="acu3">
                <h3 class="onglet">Titre 3</h3>
            </div>
        </a>
</div>

<div class="clear"></div>

<div id="contenu_soins">
    <div class="newboxes" id="onglet1">
        <div class="rectangle"></div>
            <h2 class="titre_bloc">Titre1</h2>
            <div class="clear"></div>
            <div class="contenu-texte">
                <div class="contenu-texte"><p>bloc 1</p></div> </div>
            </div>
            <div class="newboxes" id="onglet2">
                <div class="rectangle"></div>
                    <h2 class="titre_bloc">Titre2</h2>
                    <div class="clear"></div>
                    <div class="contenu-texte"><p>bloc 2</p></div>
                </div>
                <div class="newboxes" id="onglet3">
                    <div class="rectangle"></div>
                        <h2 class="titre_bloc">Titre3</h2>
                        <div class="clear"></div>
                        <div class="contenu-texte"><p>bloc 3</p></div>
                    </div>
                </div>

这是CSS:

#fond_soins {
    height:280px;
    background-color:#FFF;
    width:100%;
}
#contenu_soins {
    background-color:#FFF;
    margin-top:30px;
    min-height: 242px;
    padding-top: 11px;    
}
.newboxes {
    padding-left:30px;
    padding-right:30px;
    padding-bottom:30px;
}
a.asoins, a.asoins:hover {
    text-decoration: none;
}
#acu1 {
    margin-left: 6em;
}

#acu1, #acu2, #acu3 {
    width:15%;
    height:165px;
    border-radius: 15px;
    border-style:solid;
    border-color: #E5EAD9;
    border-width:5px;
    color:#777;
    float:left;
    margin-right:1em;
    margin-top:69px;
}
#acu1:hover,#acu2:hover,#acu3:hover {
    border-color:#333;
    color:#333;
    text-decoration:none;
}

h3.onglet {
    text-align:center;
    padding-top:135px;
}

#onglet1 {
    display:block;
}
#onglet2, #onglet3 {
    display:none;
}

#acu1.active, #acu2.active, #acu3.active {
    border-color:#333;
    color:#333;
    text-decoration:none;
}

这是Javascript

function showonlyone(thechosenone) {
    $('.newboxes').each(function(index) {
        if ($(this).attr("id") == thechosenone) {
            $(this).show();    
        }
        else {
            $(this).hide();
        }
    });
};

3 个答案:

答案 0 :(得分:3)

创建一个新的css类名称“active”as

    .active #acu1,.active #acu2,.active #acu3
    {
        text-decoration: underline;
        border-radius: 15px;
        border-style: solid;
        border-color: Black;
        border-width: 5px;
    }

现在,对javascript函数进行小修正,通过发送this运算符添加一个参数 例如: <a class"asoins" href="javascript:void(0);" onclick="javascript:showonlyone('onglet3',this);" ></a> 并在js函数中进行一些更改

function showonlyone(thechosenone,CurrCtrl) {

     $(".asoins").removeClass("active");
     $(CurrCtrl).addClass("active");

     $('.newboxes').each(function(index) {
          if ($(this).attr("id") == thechosenone) {
               $(this).show();    
          }
          else {
               $(this).hide();
          }

     });

};

答案 1 :(得分:0)

试试这个:

$(function(){
    var links = $('.asoins');

    links.click(function(){
        $(this).toggleClass('activelink', true);
        links.not(this).toggleClass('activelink', false);
    });
});

CSS:

#acu1:hover,#acu2:hover,#acu3:hover, #fond_soins .activelink div {
    border-color:#333;
    color:#333;
    text-decoration:none;
}

DEMO:http://jsfiddle.net/yJYTT/119/

答案 2 :(得分:0)

我喜欢纯CSS解决方案,所以我为你做了这个:

http://jsfiddle.net/vucMe/

它使用#a:checked ~ label[for=a]来设置充当单选按钮的标签