如果单独的div为空,我正在尝试删除特定的div。这是我正在使用的:
$(document).ready(function () {
if ('#leftmenu:empty') {
$('#menuTitleWrapper').remove();
$('#middlemenu').css({ 'right': '0', 'position': 'absolute' });
$('#PageContent').css({ 'top': '30px', 'position': 'relative' });
}
});
我认为这很接近,但我无法弄清楚如何编写代码来测试#leftmenu是空的。任何帮助表示赞赏!
答案 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
}