查找具有某些后代项的元素

时间:2012-01-11 23:06:20

标签: html css css-selectors

我正在尝试定位具有子菜单项的导航菜单项,以便在项目后面放置向下箭头。到目前为止,我有这个:

nav[role=navigation] ul li a:after { 
padding-left:5px; 
content: "\25BE";
color:#00b49c;
}

我有什么想法可以做到这一点?

我尝试过:nav[role=navigation] > ul li a:after但没有运气。

谢谢大家

2 个答案:

答案 0 :(得分:0)

尝试

nav[role=navigation] ul li a::after { 
content: "\25BE";
color:#00b49c;
display: block;
float: left;
width: 20px;
height: 10px;
}

答案 1 :(得分:0)

根据提供的信息,我猜测ul是子项,对吧?如果是这种情况,我能提出的最佳解决方案(未经测试)是:

$(document).ready(function() {
    $("nav[role=navigation]:has(ul)").each(function() {
        $("ul li a", $(this)).after("\25BE").css({color: "#00b49c", paddingLeft: "5px"});
    });
});

如果您不熟悉jQuery,请注意以下几点:

  1. 使用$(document).ready(function() {});方法是标准的。
  2. :has选择器特定于jQuery(据我所知,虽然它可能包含在CSS3或4中 - 无论何时出现)。
  3. 请注意,.css函数中的CSS属性以逗号分隔,属性名称错过了使用的破折号,破折号后的第一个字母大写(例如paddingLeft)。
  4. $(this)之后的ul li a用于说明.each循环中当前对象中无序列表中列表项内的任何链接。
  5. 我不完全确定你想要选择什么 - 无论是nav,ul还是li。无论是哪种,你都应该修改上面的代码,这样你想要选择的元素就在第一行的第一行之前。

    如果我没有很好地回答这个问题,那么请扩展你想要达到的目标,我会尽力修改我的答案以满足你的要求。