2009-12-02 102 views
1

有了jQuery我試圖確定<div>是否有內容,或者如果它確實那麼我不想做什麼,但是如果沒有,那麼我想添加display:none它或.hide()。下面是我想出了,顯示一個div元素取決於它是否有內容

if ($('#left-content:contains("")').length <= 0) { $("#left-content").css({'display':'none'}); }

這並不在所有的工作,如果div有沒有內容,那麼它只是顯示了反正可以在任何提供任何意見?

回答

7

只需在選擇器中使用:empty filter即可。

$('#left-content:empty').hide(); 
+1

這不工作,如果正確有'#左content'內空白textnodes。例如'

''''''''裏面有一個空的div。 – 2009-12-02 19:26:15

+0

是的,文檔指出,只有在沒有子節點時纔會被認爲是空的,包括文本節點,這肯定會讓你跳起來 – womp 2009-12-02 19:45:34

4
if($("#left-content").html().length == 0) { 
    $("#left-content").hide(); 
} 
+1

在什麼情況下' html()。length' be less than 0? – James 2009-12-02 19:15:17

+0

You are right。Never。 – 2009-12-02 19:16:55

0

嘗試刪除第一空格:

// first remove whitespaces 

    // html objects content version: 
    var content = $.trim($("#left-content).html()).length; 

    if(content == 0) { 
    $("#left-content).hide(); 
    } 

    // html RAW content version: 
    var content = $.trim($("#left-content).html()); // <-- same but without length 

    if(content == "") {        // <-- this == "" 
    $("#left-content).hide(); 
    } 
相關問題