用CSS选择递归div布局中的最后一个div

时间:2012-07-16 23:10:19

标签: css recursion css-selectors

使用以下HTML,我如何选择DIV depper(没有子女)?

我认为我可以使用n-last-child但是不行,因为所有div都有最后一个(也是第一个)! :d

PD:不能在DIV中更深入地使用ID或CLASS属性(因为它们是Web中的HTML存在文件)

HTML:

<div class="base">
    <div>
        <div>
            <div>
                <div>
                    <!-- recursive divs (quantity not defined...) -->
                </div>
            </div>
        </div>
    </div>
</div>

3 个答案:

答案 0 :(得分:5)

遗憾的是,CSS选择器无法查看父元素,因此您无法看到哪些元素没有div作为子元素。

如果您使用的是jQuery,可以这样做来查找元素:

$('.base :not(:has(*))').addClass('deepest');​

演示:http://jsfiddle.net/EhZax/

答案 1 :(得分:4)

你必须使用Javascript。这是一个使用jQuery的例子:

$('.base *').filter(function(){
    return ! $(this).find('> *').length;
});

在此处查看:[{3}}


更新:如果您愿意,可以创建自己的:sterile选择器。这是一个例子:

jQuery.expr[':'].sterile = function(el) {
    return ! el.children.length;
};

然后你可以像使用任何其他伪选择器一样使用它:

$('.base :sterile');​

这是小提琴:http://jsfiddle.net/E6sec/

P.S。我使用http://jsfiddle.net/FBw5q/后的原生el.children。但是,IE&lt; 9将包含评论children。如果这涉及到你,你可以使用jQuery的children()方法。

答案 2 :(得分:2)

你需要Javascript。只有CSS才能实现