我有一個DOM元素如下;jquery檢查空節點
<div id="myDiv">
<jstl:tag1 />
<jstl:tag2 />
</div>
現在你可以看到,我有一個JSTL標籤,可以返回一些文本值。
我需要最後檢查,如果我的DOM元素「myDiv」使用jQuery是空..
可惜我不能做一個簡單的$("#myDiv").html() == ""
因爲即使JSTL標籤不retun任何價值,我得到新行字符裏面的div作爲\ n和所有
如何解釋那些空節點檢查?
我有一個DOM元素如下;jquery檢查空節點
<div id="myDiv">
<jstl:tag1 />
<jstl:tag2 />
</div>
現在你可以看到,我有一個JSTL標籤,可以返回一些文本值。
我需要最後檢查,如果我的DOM元素「myDiv」使用jQuery是空..
可惜我不能做一個簡單的$("#myDiv").html() == ""
因爲即使JSTL標籤不retun任何價值,我得到新行字符裏面的div作爲\ n和所有
如何解釋那些空節點檢查?
你可以做一個正則表達式測試
/\w+/.test($("#myDiv").html())
它將測試像字母數字字符至少一個字字符。
怎麼樣:
$('#myDiv').html().trim() == "";
嘗試)這樣的事情,使用文本(而不是HTML()
$("#myDiv").text().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;
你所說的 「空」 是什麼意思?不包含非空白文本節點? – 2013-02-27 08:31:20
嘿Testndtv - 看到我的答案,你可以.trim走新行。 – 2013-02-27 08:33:57