使用if语句检查div是否为空

时间:2011-01-12 04:54:32

标签: jquery

如果单独的div为空,我正在尝试删除特定的div。这是我正在使用的:

$(document).ready(function () {
    if ('#leftmenu:empty') {
        $('#menuTitleWrapper').remove();
        $('#middlemenu').css({ 'right': '0', 'position': 'absolute' });
        $('#PageContent').css({ 'top': '30px', 'position': 'relative' });
    }
});

我认为这很接近,但我无法弄清楚如何编写代码来测试#leftmenu是空的。任何帮助表示赞赏!

10 个答案:

答案 0 :(得分:253)

您可以使用.is()

if( $('#leftmenu').is(':empty') ) {
    // ...

或者您可以只测试length属性以查看是否找到了一个。

if( $('#leftmenu:empty').length ) {
    // ...

请注意,表示没有空格。如果有可能存在空格,则可以使用$.trim()并检查内容的长度。

if( !$.trim( $('#leftmenu').html() ).length ) {
    // ...

答案 1 :(得分:33)

这取决于你的意思。

检查是否没有文本(这允许子元素自己为空):

if ($('#leftmenu').text() == '')

检查是否没有子元素或文本:

if ($('#leftmenu').contents().length == 0)

或者,

if ($('#leftmenu').html() == '')

答案 2 :(得分:18)

如果你想快速演示如何检查空div,我建议你试试这个链接:

http://html-tuts.com/check-if-html-element-is-empty-or-has-children-tags/


下面是一些简短的例子:

使用CSS

如果你的div是空的,甚至没有任何空格,你可以使用CSS:

.someDiv:empty {
    display: none;
}

不幸的是,没有CSS选择器可以选择以前的兄弟元素。只有下一个兄弟元素:x ~ y

.someDiv:empty ~ .anotherDiv {
    display: none;
}

使用jQuery

使用text()函数检查元素的文本长度

if ( $('#leftmenu').text().length == 0 ) {
    // length of text is 0
}

检查元素中是否有任何子标记

if ( $('#leftmenu').children().length == 0 ) {
    // div has no other tags inside it
}

检查空元素是否有空格

if ( $.trim( $('.someDiv').text() ).length == 0 ) {
    // white-space trimmed, div is empty
}

答案 3 :(得分:11)

您可以延长jQuery 像这样的功能:

延伸:

(function($){
    jQuery.fn.checkEmpty = function() {
       return !$.trim(this.html()).length;
    };
}(jQuery));

使用:

<div id="selector"></div>

if($("#selector").checkEmpty()){
     console.log("Empty");
}else{
     console.log("Not Empty");
}

答案 4 :(得分:2)

试试这个:

$(document).ready(function() {
    if ($('#leftmenu').html() === "") {
        $('#menuTitleWrapper').remove();
        $('#middlemenu').css({'right' : '0', 'position' : 'absolute'});
        $('#PageContent').css({'top' : '30px', 'position' : 'relative'});
    }
});

这不是最漂亮的,但应该有效。它检查innerHTML(#leftmenu的内容)是否为空字符串(即内部没有任何内容)。

答案 5 :(得分:1)

在我的情况下,我有多个要隐藏在document.ready上的元素。这是迄今为止对我有用的函数(过滤器):

$('[name="_invisibleIfEmpty"]').filter(function () {
    return $.trim($(this).html()).length == 0;
}).hide();

或.remove()而不是.hide(),无论你喜欢什么。

供参考: 特别是,这是我用来隐藏SharePoint中令人讨厌的空表单元格的解决方案(另外还有这个条件“|| $(this).children(”menu“)。length”。

答案 6 :(得分:0)

if (typeof($('#container .prateleira')[0]) === 'undefined') {
    $('#ctl00_Conteudo_ctrPaginaSistemaAreaWrapper').css('display','none');
}

答案 7 :(得分:0)

我今天遇到了这个问题,被接受的答案对我不起作用。这是我的方法。

if( $('#div-id *').length === 0 ) {
    // your code here...
}

我的解决方案检查div中是否有任何元素,因此如果其中仅包含文本,它仍会将div标记为空。

答案 8 :(得分:0)

您也可以使用它:


    if (! $('#leftmenu').children().length > 0 ) {
         // do something : e.x : remove a specific div
    }

我认为它将为您服务!

答案 9 :(得分:-3)

if($('#leftmenu').val() == "") {
   // statement
}