2013-02-16 80 views
0

無序列表功能 我目前有三個變量來自數據庫$ firstline $ secondline $ thirdline,但有時其中一個變量是空的。當我嘗試將它放入無序列表中時,該字段中有空行。我該如何編寫一個函數來檢查一個空白變量,然後如果該變量爲空則排除該變量。基本的東西去「而FIRSTLINE,二線,thirdline不爲空,然後建立這個無序列表如果FIRSTLINE是空的,從無序列表等刪除..」刪除無序列表中的空行

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

回答

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>" : ''; 
+0

對於PHP位,你會使用'!空($這個 - > FIRSTLINE)',而不是'strlen' – 2013-02-16 18:17:48

+0

如前所述它已經相當有一段時間,因爲我非常喜歡PHP,但是我感興趣:是否有理由使用'!empty()'而不是'strlen()> 0',還是隻是一種替代方法? – 2013-02-16 18:20:27

+0

只是一種替代方法;但它更短,更具可讀性,而'empty()'是一種語言結構,而不是函數,所以它可能會更快(以微乎其微的量)。 – 2013-02-16 18:40:50

0

因爲你是在PHP動態顯示列表嘗試這樣

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

東西功能可以是這樣的

function checkEmpty($val){ 

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

} 

現在你可以SE這個功能

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

不會'返回$ val? '

  • '。 $ val。'
  • ':'';'稍微簡潔些? – 2013-02-16 16:19:55

    -1

    試試這個:)

    ol, ul{list-style:none;} 
    
    +0

    我認爲你需要重新閱讀這個問題。這不是'list-style-type'這是問題:它是*空的列表項目*。 – 2013-02-16 16:20:44