我有一个 DOM 元素,如下所示;
<div id="myDiv">
<jstl:tag1 />
<jstl:tag2 />
</div>
现在你可以看到,我有一个可以返回一些文本值的 JSTL 标签。
我最终需要使用 jQuery 检查我的 DOM 元素“myDiv”是否为空。
$("#myDiv").html() == ""
不幸的是,即使 JSTL 标记不重新调整任何值,我也不能做一个简单的事情,我在 div 中得到新行字符为 \n 和所有
我如何解释那些检查空节点的原因?
我有一个 DOM 元素,如下所示;
<div id="myDiv">
<jstl:tag1 />
<jstl:tag2 />
</div>
现在你可以看到,我有一个可以返回一些文本值的 JSTL 标签。
我最终需要使用 jQuery 检查我的 DOM 元素“myDiv”是否为空。
$("#myDiv").html() == ""
不幸的是,即使 JSTL 标记不重新调整任何值,我也不能做一个简单的事情,我在 div 中得到新行字符为 \n 和所有
我如何解释那些检查空节点的原因?
怎么样:
$('#myDiv').html().trim() == "";
您可以测试元素内非空白节点的数量:
var nodes = $('#myDiv')[0].childNodes;
var nonempty = [];
for(i=0; i<nodes.length;i++){
if(nodes[i].nodeType !== 3 || nodes[i].nodeValue.trim() !== "" ){
nonempty.push(nodes[i]);
}
}
//this should be 0 if empty
alert(nonempty.length);
这是一个演示:http: //jsfiddle.net/DWx8R/
var isEmpty = $.trim( $('#myDiv').text() ).length === 0;
尝试这样的事情,使用 text() 而不是 html()
$("#myDiv").text().trim();
你可以做一个正则表达式测试
/\w+/.test($("#myDiv").html())
它将测试至少一个单词字符,例如字母数字字符。