奇数时选择最后一个孩子,偶数时选择最后两个孩子

时间:2015-04-21 11:20:39

标签: css css-selectors siblings

我所处理的元素数量是可变的,我需要一个我无法实现的奇怪解决方案,我甚至怀疑它是否只能通过css实现

如果我的元素数是奇数,我需要选择last-child,如果元素数是偶数,我需要选择最后2个子元素。

我一直在尝试使用nth-last-child:not(:nth-last-child()),奇数和偶数,但从未得到过很好的解决方案。

任何人对此问题都有任何想法/建议,这是添加课程的一部分" odd"喜欢在html桌子上?

提前多多感谢!

3 个答案:

答案 0 :(得分:16)

这是一种方式......

.wrap div:last-child,
.wrap div:nth-last-of-type(-n+2):not(:nth-child(even)) {
    color: red;
}
<div class="wrap">
    <div>Odd</div>
    <div>Even</div>
    <div>Odd</div>
    <div>Even</div>
    <div>Odd</div>
    <div>Even</div>
</div>

<hr>

<div class="wrap">
    <div>Odd</div>
    <div>Even</div>
    <div>Odd</div>
    <div>Even</div>
    <div>Odd</div>
</div>

答案 1 :(得分:12)

您可以像这样使用CSS:

li:last-child:nth-child(odd) {
    /* Last child AND odd */
    background: red;
}

li:nth-last-child(2):nth-child(odd),
li:last-child:nth-child(even) {
    /* Before last child AND odd */
    /* Last child AND even */
    background: green;
}

演示:https://jsfiddle.net/hw0ehrhy/

答案 2 :(得分:-5)

绝对可以用纯CSS完成。请参阅下面的完整代码(奇怪的孩子,最后的孩子红色;甚至孩子,最后2个孩子的绿色)

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $('#but1').click(function(){
            var count = $('p').length; 
            if (count%2!=0) {$('div>p:last-child').css('background','red');}
            else {$('div>p:last-child').css('background','green');alert(count);
                $('div>p:nth-last-child(2)').css('background','green');
            }
        });
    });
</script>
</head>
<body>
<button id=but1>Click</button>
<div>
<p>This is one.     </p>
<p> This is two.    </p>
<p> This is three.  </p>
<p> This is four.   </p>
<p> This is five.   </p>
<p> This is six.    </p>
</div>
</body>
</html>

享受,编码;)