使用jQuery:
$('li').filter(function(){
return $(this).text().trim() === '';
}).remove();
JS Fiddle demo
用普通的JavaScript:
function removeEmpty(tags, parent){
if (!tags) {
return false;
}
else {
tags = tags.split(/\s+/);
parent = parent && parent.nodeType === 1 ? parent : document.body;
var children = [], _tmp;
for (var i = 0, len = tags.length; i < len; i++) {
_tmp = parent.getElementsByTagName(tags[i]);
if (_tmp.length) {
for (var I = 0, Len = _tmp.length; I < Len; I++){
children.push(_tmp[I]);
}
}
}
if (children.length > -1) {
var i = children.length - 1,
cur, txt;
while (i) {
cur = children[i];
txt = (cur.textContent || cur.innerText).replace(/(^\s+)|($\s+)/g,'');
if (!txt.length) {
cur.parentNode.removeChild(cur);
}
i--;
}
}
}
}
removeEmpty('li em', document.getElementsByTagName('div')[0]);
JS Fiddle demo
這是非常囉嗦,但大部分長度是允許允許一個函數調用多個標籤,這樣你就可以調用函數:
使用CSS:
li:empty {
display: none;
}
JS Fiddle demo
雖然這甚至考慮一個單一的空白<li> </li>
是一個非空元素。
用PHP
可能(它一直以來我最後一次使用任何 PHP相當長的一段時間):
echo strlen($this->firstline) > 0 ? "<li>$this->firstline</li>" : '';
echo strlen($this->secondline) > 0 ? "<li>$this->secondline</li>" : '';
echo strlen($this->thirdline) > 0 ? "<li>$this->thirdline</li>" : '';
對於PHP位,你會使用'!空($這個 - > FIRSTLINE)',而不是'strlen' – 2013-02-16 18:17:48
如前所述它已經相當有一段時間,因爲我非常喜歡PHP,但是我感興趣:是否有理由使用'!empty()'而不是'strlen()> 0',還是隻是一種替代方法? – 2013-02-16 18:20:27
只是一種替代方法;但它更短,更具可讀性,而'empty()'是一種語言結構,而不是函數,所以它可能會更快(以微乎其微的量)。 – 2013-02-16 18:40:50