【问题标题】:css jquery changing class stylecss jquery改变类风格
【发布时间】:2011-11-27 12:02:37
【问题描述】:
$("#menu li").click(function () {
        $("#menu .active").removeAttr("class");
        $(this).attr("class","active");
    });

        <div id="menu">
            <ul>
                <li id="m1" class="active"><a>link 1</a></li>
                <li id="m2"><a>link 1</a></li>
                <li id="m3"><a>link 2</a></li>
                <li id="m4"><a>link 3</a></li>
                <li id="m5"><a>link 4</a></li>
                <li id="m6"><a>link 5</a></li>
                <li id="m6"><a href="">link 6</a></li>
                <li id="m7"><a href="">link 7</a></li>
                <li id="m8"><a>link 8</a></li>
            </ul>
        </div>

css:

#menu .active{
    background:white;
}

#menu .active a{
    opacity:0.5;
}

#menu a{
    color:#08042b;
    text-decoration:none;
    font-size:14px;
    text-shadow: 1px 0px 1px #6055c8;
    position:relative;

}

当我第一次点击链接时,一切似乎都很好.. 当我第二次单击此 li 更改的 li 字体的背景颜色时,不透明度为 0.5, 以前的 li 没有活动的 className 但以前的 li 文本还没有进入 opacity:1 有什么帮助吗?

【问题讨论】:

  • 而不是使用attr 来添加和删除类用户.addClass 和.removeClass
  • 我试试这个.. 基本的,你在这一点上是对的。但不要改变任何东西
  • $("#menu li").click(function () { $("#menu .active").removeAttr("class").find("a").css("不透明度",1); $(this).addClass("active"); });这行得通,但为什么我的原始代码不起作用?
  • 如果你坚持这种不好的做法,请使用.prop而不是.attr。
  • @user726730:jquery legends 创建.class 的原因是为了让开发人员的生活更轻松。我想知道你为什么要走圆路?

标签: jquery css class


【解决方案1】:

如前所述,使用$("#menu .active").removeClass("active"); 比删除整个类属性更正确,因为您可能会丢失可能拥有的其他类,从而导致意外行为。

【讨论】:

  • 为什么:$("#menu .active").removeClass("active").find("a").css("opacity",1);有效,但这: $("#menu .active").removeClass("active");不是??类在任何情况下都会发生变化,但只有第一个代码中的不透明度会发生变化
猜你喜欢
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2012-08-11
  • 2019-05-08
  • 2015-06-23
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多