为什么jquery addClass不会改变css

时间:2013-11-15 17:13:34

标签: jquery css

我使用“active”类设置通过css更改颜色。

我的问题是,当我使用jquery添加/删除“活动”类时,为什么这些组件的颜色不会改变?

$(document).ready(function() {

    $('#create_links_tab').click(function(){
        $('#share_links_tab').removeClass("active");
        $('#create_links_tab').addClass("active");
        $('#share_links_panel').hide();
        $('#create_links_panel').fadeIn(1500);
    });

    $('#share_links_tab').click(function(){
        $('#create_links_tab').removeClass("active");
        $('#share_links_tab').addClass("active");
        $('#create_links_panel').hide();
        $('#share_links_panel').fadeIn(1500);
    }); 

});

HTML:

//left menu
echo "<div class=\"col-md-3\">";
echo "<ul class=\"nav nav-pills nav-stacked\">";
echo "<li class=\"active\"><a id=\"create_links_tab\" style=\"cursor:pointer;\"><i class=\"fa fa-plus\"></i>&nbsp;&nbsp;Create Links</a></li>";
echo "<li><a id=\"share_links_tab\" style=\"cursor:pointer;\"><i class=\"fa fa-search\"></i>&nbsp;&nbsp;Share Links</a></li>";
echo "</ul>";
echo "</div>";

的CSS:

.nav-pills>li.active>a, .nav-pills>li.active>a:hover, .nav-pills>li.active>a:focus {
color: #fff;
background-color: #428bca;
}

3 个答案:

答案 0 :(得分:3)

您正在更改<a>元素的类,而根据您的CSS,您应该更改<li>所在的<a>元素的类。

答案 1 :(得分:2)

必须将active类分配给li元素,在您的情况下,它是share_links_tabcreate_links_tab元素的父级

$(document).ready(function () {

    $('#create_links_tab').click(function () {
        $('#share_links_tab').parent().removeClass("active");
        $('#create_links_tab').parent().addClass("active");
        $('#share_links_panel').hide();
        $('#create_links_panel').fadeIn(1500);
    });

    $('#share_links_tab').click(function () {
        $('#create_links_tab').parent().removeClass("active");
        $('#share_links_tab').parent().addClass("active");
        $('#create_links_panel').hide();
        $('#share_links_panel').fadeIn(1500);
    });

});

演示:Fiddle

答案 2 :(得分:0)

您需要的是CSS.active课程。

例如:

.active {
  color: blue;
}

然后,使用jQuery,使用.toggleClass()方法切换您的课程。像这样:

$('.element').click(function(){
  $(this).toggleClass('active');
});

Check this JSFiddle我为您创建的,表明了这种行为。