0

我有一个 DOM 元素,如下所示;

<div id="myDiv">
<jstl:tag1 />
<jstl:tag2 />
</div>

现在你可以看到,我有一个可以返回一些文本值的 JSTL 标签。

我最终需要使用 jQuery 检查我的 DOM 元素“myDiv”是否为空。

$("#myDiv").html() == ""不幸的是,即使 JSTL 标记不重新调整任何值,我也不能做一个简单的事情,我在 div 中得到新行字符为 \n 和所有

我如何解释那些检查空节点的原因?

4

5 回答 5

1

怎么样:

$('#myDiv').html().trim() == "";
于 2013-02-27T08:32:03.290 回答
0

您可以测试元素内非空白节点的数量:

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/

于 2013-02-27T08:40:02.817 回答
0
var isEmpty = $.trim( $('#myDiv').text() ).length === 0;

小提琴

于 2013-02-27T08:40:27.713 回答
0

尝试这样的事情,使用 text() 而不是 html()

 $("#myDiv").text().trim();
于 2013-02-27T08:32:26.537 回答
0

你可以做一个正则表达式测试

/\w+/.test($("#myDiv").html())

它将测试至少一个单词字符,例如字母数字字符。

于 2013-02-27T08:30:36.697 回答