html - 单击时的事件状态不起作用(列表)

标签 html css

我对 CSS 中的“事件”状态有一点疑问。我有一个 <ul>,其中有 4 个列表,如果它们被点击,我想给这些链接一个不同的 background-color(并保持这种状态!)。问题是这行不通...

这是我的 HTML:

<nav id="quick-index-nav">
<ul id="quick-index-list" class="pills slim muted">
<li class="active">
<a id="qindex-popular" title="..." target="right" href="right.php">everything</a>
</li>
<li>
<a id="qindex-today" title="..." target="right" href="right.php?t=tod">today</a>
</li>
<li class="yesterday">
<a id="qindex-yesterday" title="..." target="right" href="right.php?t=yes">tomorrow</a>
</li>
<li>
<a id="qindex-day" title="...." target="right" href="right.php?t=mix">never</a>
</li>
</ul>
</nav>

这是我的 CSS 文件:

#quick-index-nav{margin-bottom:10px; margin-left: -50px;}
#quick-index-list{margin-bottom:0;*zoom:1;border:0px ridge #d9d9d9}
#quick-index-list:before,#quick-index-list:after{display:table;content:""}
#quick-index-list:after{clear:both}
#quick-index-list li{display:inline-block;float:left;width:25%;margin:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-right:0px ridge #d9d9d9}
#quick-index-list li:nth-child(4n){border-right:0px}
#quick-index-list li:nth-child(n+5){border-top:0px ridge #d9d9d9}
#quick-index-list li>a{padding:0;display:block;font-size:1.0em;text-align:center; font-family: Calibri;}

.pills>li{display:inline-block;margin-bottom:5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border:1px solid #d9d9d9}
.pills>li>a{padding:6px 10px;cursor:pointer;display:inline-block}
.pills>li>a:hover{text-decoration:none}
.pills>li:hover{background-color:#d9d9d9;text-decoration:none}
.pills>li.active{background-color:#456695;border-color:#456695}
.pills>li.active>a{color:#fff}
.pills.slim>li>a{padding:3px 5px;font-size:.9em}
.pills.muted>li>a{color:gray}
.pills.muted>li.active>a{color:#fff};
.muted {
    color: gray;
}

它有什么问题?

PS: 这是一个演示 http://jsfiddle.net/1BJK903/fxTQL/5/

最佳答案

据我了解,您想使用 active 伪类,而不是应该有 pills>li:active>a。另外,我知道它仅适用于链接(从未使用过,这可能是错误的),因此您可能需要像这样更改类:pills>li>a:active/p>

更新

经过一些测试发现这个pills>li:active>a 在 FF、Chrome 和 IE8+ 中有效,在 IE7 中无效

要执行您需要的操作,您可以使用此代码在您的页面上启用 jquery。第二个脚本标签包含将更改类的代码。

<script type="text/javascript" scr="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
   $(function(){
   $(".pills li").click(function(){
       $(".pills li").removeClass("active");
       $(this).addClass("active"); 
    })​
})
</script>

关于html - 单击时的事件状态不起作用(列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426233/

相关文章:

javascript - 如何在文本html中获取一个单词并在其下划线?

出现 CSS 未知边距/填充

javascript - 将Canvas Circular Timer分成364个

javascript - 动态设置渐变不起作用

html - 如何在html中设置表单的位置?

javascript - 如何使用 JQuery 和 Javascript 为响应式图像 slider 设置图像宽度

html - 在 CSS 中使两个圆圈位于垂直线的顶部

javascript - 为 javascript 菜单效果粘在当前页面的状态

jquery - 如何在屏幕向下滚动 200 像素后更改图像大小。

css - 防止 CSS 转换影响 child