我试图调用一个函数,只有当一个HTML元素是空的,使用jQuery。

就像这样:

if (isEmpty($('#element'))) {
    // do something
}

当前回答

!elt.hasChildNodes()

是的,我知道,这不是jQuery,所以你可以使用这个:

!$(elt)[0].hasChildNodes()

现在快乐吗?

其他回答

换行符被认为是FF中元素的内容。

<div>
</div>
<div></div>

Ex:

$("div:empty").text("Empty").css('background', '#ff0000');

在IE中,两个div都被认为是空的,在FF和Chrome中,只有最后一个是空的。

您可以使用@qwertymk提供的解决方案

if(!/[\S]/.test($('#element').html())) { // for one element
    alert('empty');
}

or

$('.elements').each(function(){  // for many elements
    if(!/[\S]/.test($(this).html())) { 
        // is empty
    }
})

对于浏览器来说,另一个选项应该比html()或children()要求更少的“工作”:

function isEmpty( el ){
  return !el.has('*').length;
}
if($("#element").html() === "")
{

}

空格和换行符是使用:empty选择器的主要问题。注意,在CSS中:empty伪类的行为与此相同。我喜欢这个方法:

if ($someElement.children().length == 0){
     someAction();
}

如果你说的“空”是指没有HTML内容,

if($('#element').html() == "") {
  //call function
}