使用nth-child CSS定位异常数字

时间:2014-06-19 10:42:02

标签: javascript jquery html css css-selectors

我不倾向于使用nth-child,因为我总是发现它令人困惑,但我想知道它是否可能针对某些孩子?

我有一个列表,我想仅针对1,3,5,8,10,12个元素,这可能与n-child有关吗?我使用了nth-tester(link),但没有运气......

<ul>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
</ul> 

如果不是可以用javascript做到这一点?

谢谢!

6 个答案:

答案 0 :(得分:4)

您可以使用多个:nth-child选择器,但无法将它们组合在一起。

ul li:nth-child(1), ul li:nth-child(3), ul li:nth-child(5), ... {
    /* styles */
}

答案 1 :(得分:2)

最简单和最强大的方法是使用一个选择器列表,每个选择器都针对一个孩子:

li:nth-child(1), li:nth-child(3), li:nth-child(5), 
li:nth-child(8), li:nth-child(10), li:nth-child(12) { 
  /* declarations here */
}

可以构建一个更短的替代方案,但它看起来更加模糊。您可以使用数字少于7的所有奇数编号的子项作为目标,使用单独的选择器编制所有偶数编号为8的子编号:

li:nth-child(2n+1):not(:nth-child(n+7)),
li:nth-child(2n+8) {
  /* declarations here */
}
但是,这很难维护。例如,第二个选择器也会匹配第14项,因此如果追加新项目,则需要修改代码。

答案 2 :(得分:0)

这应该可以帮助你使用CSS和jQuery:

http://jsfiddle.net/wildandjam/PzN9L/

ul li:nth-child(1){
    background:red;
}


$("ul li:nth-child(10)").addClass("number10");

答案 3 :(得分:0)

试试这个

1,3,5,8,10,12  contain only target value.so you have to use **[contains][1]**

选择器

$( "ul li:contains('TARGET')" ).css( "text-decoration", "underline" );

答案 4 :(得分:-1)

您可以使用多个:eq选择器:

$('ul').find('li:eq(0), li:eq(2), li:eq(4),li:eq(7),li:eq(9),li:eq(11)');

答案 5 :(得分:-2)

你可以在html中进行黑客攻击:

<ul>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li style="display:none;">TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
    <li>Item</li>
    <li>TARGET</li>
</ul> 

的CSS:

li:nth-child(2n+1) {
    border: 1px solid #c00;
}

Example