可能重复问题:
使用jQuery检查HTML元素是否为空
我有一个空的div,像这样:
<div id="cartContent"></div>
我需要检查它是否为空。如果是空的,它需要返回true并添加一些
元素。如果不是,则返回false并执行其他一些函数。最好的方法是如何检查
中是否有任何
元素?
谢谢。
可能重复问题:
使用jQuery检查HTML元素是否为空
我有一个空的div,像这样:
<div id="cartContent"></div>
我需要检查它是否为空。如果是空的,它需要返回true并添加一些
元素。如果不是,则返回false并执行其他一些函数。最好的方法是如何检查
元素?
谢谢。
使用纯JavaScript
var isEmpty = document.getElementById('cartContent').innerHTML === "";
如果您正在使用jQuery,可以这样做
var isEmpty = $("#cartContent").html() === "";
document.getElementById('cartContent').html
--> 无定义,无论实际元素是什么。 - Teemu!element.hasChildNodes()
- user663031xx.innerHTML
或 xx.children.length
,它们略有不同! - John Henckel您可以使用本地JavaScript:
if document.getElementById('cartContent').innerHTML === "" {
您可以使用 .is()
方法:if( $('#leftmenu').is(':empty') ) {
或者你可以测试length
属性,以查看是否找到了一个:
if( $('#leftmenu:empty').length ) {
您可以使用$.trim()
来去除空格(如果需要)并检查内容的长度:
您可以使用$.trim()
来去除空格(如果需要)并检查内容的长度:
if( !$.trim( $('#leftmenu').html() ).length ) {
就像其他人已经提到的一样,您可以在jQuery中使用:empty
来实现以下功能:
$('#cartContent:empty').remove();
它将删除空的 #cartContent
div。但是,人们在这里建议的方法可能不能达到您想要的效果,因为如果它包含任何包含空格的文本节点,则不被视为空。因此,这不是空的:
<div> </div>
虽然你可能认为它是空的。
我之前遇到过这个问题,所以我写了这个小的jQuery插件 - 只需将其添加到你的代码中:
jQuery.expr[':'].space = function(elem) {
var $elem = jQuery(elem);
return !$elem.children().length && !$elem.text().match(/\S/);
}
现在你可以使用
$('#cartContent:space').remove();
如果 div 元素为空或仅包含空格,则会将其移除。当然,你不仅可以将其移除,还可以进行任何你想做的事情,比如
$('#cartContent:space').append('<p>It is empty</p>');
而且您可以这样使用 :not
:
$('#cartContent:not(:space)').append('<p>It is not empty</p>');
我设计了这个测试,可以可靠地完成我想要的功能,并且您可以将其从插件中提取出来以将其用作独立的测试:
这个测试适用于jQuery对象:
function testEmpty($elem) {
return !$elem.children().length && !$elem.text().match(/\S/);
}
这个可以用于DOM节点:
function testEmpty(elem) {
var $elem = jQuery(elem);
return !$elem.children().length && !$elem.text().match(/\S/);
}
这比使用.trim
更好,因为上面的代码首先测试被测试元素是否有任何子元素,如果有,则尝试查找第一个非空白字符,然后停止,无需读取或改变字符串,即使它具有一个非空格字符。
希望这有所帮助。
if( $('#cartContent').is(':empty') ) { }
或者使用长度
if( $('#cartContent:empty').length ) { }
if( $('#cartContent').length)
是错误的,应该使用if( $('#cartContent:empty').length )
来判断#cartContent
元素是否为空。 - YogeshWaranvar empty = $("#cartContent").html().trim().length == 0;
if ($("#cartContent").children().length == 0)
{
// no child
}