:last-child删除了body div

时间:2013-02-16 12:46:07

标签: jquery css-selectors

我遇到了一个jquery的奇怪问题。 我必须删除身体的最后一个孩子,以使调整大小功能正常工作。 最后一个孩子是由twitter-social-plugin插入的div,已经过时了。

在我的调整大小功能中,我尝试了

$('body:last-child').remove();

该文件的结构如下

    <body>
        <div>here comes content and stuff</div>
        </div>that´s the div to be removed</div>
    </body>

当调用resize-function时,整个body-tag被删除,我得到一个空白页面。 调整大小功能:

$(document).ready(function() {
                $(window).bind('resize', function() {
                    $('body:last-child').remove();
                    contentStretch();
                    function contentStretch() {
                        $('#content-stretch').css({
                            height: "0"
                        });
                        var page_height =  $('#container').height();
                        var window_height = $(window).height();
                        var difference = window_height - page_height;
                        if (difference < 0) {
                            difference = 0;
                        };
                        $('#content-stretch').css({
                            height: difference + "px"
                        });
                    };
                });
            }); 

3 个答案:

答案 0 :(得分:3)

:last-child selector获取作为其父级的最后一个子元素的元素,它不查找元素中的最后一个子元素。 body元素是其父元素的最后一个子元素,因为只有一个body元素。

删除div元素的直接子项的最后一个body

$('body > div:last-child').remove();

答案 1 :(得分:1)

:last-child选择器是其附加到的项目的修饰符。所以你基本上是说删除最后一个body元素。

使代码工作以删除body的最后一个直接子项的最简单更改是向选择器添加空格。

$('body :last-child').remove();

然而,这有点危险,我建议你更准确地说明你要删除的内容。例如,您可以为所有div元素提供一个公共类,例如container。然后您还可以使用:last-of-type选择器。这确保您将完全删除您期望的内容,即使您在DOM结构的同一级别上有其他不同类型的元素。

$('.container:last-of-type').remove();

答案 2 :(得分:0)

试试这个

$('div:last').remove();