删除无序列表中的空行

时间:2013-02-16 15:34:07

标签: php jquery html zend-framework

无序列表功能 我目前有三个变量来自数据库,$ firstline,$ secondline,$ thirdline,但有时其中一个变量是空的。当我尝试将它放在无序列表中时,该字段中有一个空行。如何编写检查空白变量的函数,如果该变量为空,则排除该变量。基本上是“当第一行,第二行,第三行不是空白时,然后创建这个无序列表。如果第一行是空的,将其从无序列表中删除等。”

  <ul>
    echo "<li>$this->firstline</li>";
    echo "<li>$this->secondline</li>";
    echo "<li>$this->thirdline</li>";
  </ul>

4 个答案:

答案 0 :(得分:1)

使用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>" : '';

答案 1 :(得分:1)

一个功能可以是这样的

function checkEmpty($val){

if(!$val) return;
if($val) return "<li>".$val."</li>";

}

现在您可以使用此功能

echo checkEmpty($this->firstline);
echo checkEmpty($this->secondline);
echo checkEmpty($this->thirdline);

答案 2 :(得分:0)

当您在php中动态显示列表时尝试类似这样的

echo ($this->firstline > "") ? "<li>" . $this->firstline . "</li>" : "";
echo ($this->secondline > "") ? "<li>" . $this->secondline . "</li>" : "";
echo ($this->thirdline > "") ? "<li>" . $this->thirdline . "</li>" : "";

答案 3 :(得分:-1)

试试这个:)

    ol, ul{list-style:none;}