0

我遇到了一个奇怪的 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"
                        });
                    };
                });
            }); 
4

3 回答 3

3

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

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

$('body > div:last-child').remove();
于 2013-02-16T12:49:52.380 回答
1

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

使您的代码可以删除最后一个直接子级的最简单更改是body在选择器中添加一个空格。

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

但是,这有点危险,我建议您更具体地了解您要删除的内容。例如,您可以为所有div元素赋予一个公共类,例如container. 然后你也可以使用:last-of-type选择器。这确保了您将完全删除您期望的内容,即使您在 DOM 结构的同一级别上有不同类型的其他元素。

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

于 2013-02-16T12:48:42.537 回答
0

像这样试试

$('div:last').remove();
于 2013-02-16T12:47:10.933 回答