2012-09-19 114 views
0

我在div中顯示圖像。如果圖片不在div中,我目前隱藏了div。但是,取決於頁面中div的位置,如果div爲空,我會在頁面上獲取木板斑點。如果它是空的,我想摺疊div。我目前做這個:在jquery中創建和刪除div

的html代碼:

<div id="main" class="main1"> 
     <div id="div1" class="center"></div> 
     <div id="div2" class="center"></div> 
     <div id="div3" class="center"></div> 

    </div> 
    <div id="right" class="right1"> 
     <div id="div4" class="center"></div> 
     <div id="div5" class="center"></div> 
     <div id="div6" class="center"></div> 
    </div> 
</div> 

jQuery代碼:

$(function() { 
       $('#div3').html("").css({ "border": "", "margin": "0" }); 
       var myImage13 = new Image(); 
       $(myImage13).load(function() { 
     $('#div3').show(); 
       $("#div3").html(myImage13).css({ "border": "2px solid #E0E0E0" }); 
       $('#div3').css({ "width": "500px", "height": "500px" }); 
       $('#div3 img').css({ "width": "500px", "height": "500px" }); 


       }).attr('src', img_src).error(function() { 
        $('#div3').html("").css({ "border": "", "margin": "0" }); 
      $('#div3').hide(); 
       }) 

      }); 

我試過$( '#div3' 的)刪除(),但這完全消除DIV。任何想法如何我可以崩潰的div如果它是空的jQuery中?

+0

:'$(「#div3」的)隱藏() ;'但我不知道我理解你的問題,但這可能是因爲你提供的HTML中沒有圖像來說明你實際上在做什麼。 –

+0

你正在使用'$('#div3')。hide();'。它不工作? – Nope

+0

我有6個div,我動態地將圖像分配給這些div。但有時候他們中的任何一個都可能是空的。如果是emtpy,是否可以摺疊div以便下一個完整的div在html中佔據它的位置。如果我隱藏div,它的位置仍然保留。 – user1471980

回答

0

引述.error jQuery的DOC:

的事件處理程序中的瀏覽器將觸發錯誤 事件之前,這就是爲什麼該示例附着 處理程序後的src屬性設置必須被附接。此外,當本地提供 頁面時,可能無法正確觸發錯誤事件;錯誤依賴於HTTP狀態代碼,如果URL使用file:協議,通常不會觸發 。

換句話說,將.error在你的代碼.attr後:

... 
.error(function() { 
    $('#div3').html("") 
      .css({ border: '', margin: 0 }) 
      .hide(); 
}).attr('src', img_src) 
... 
+0

謝謝。這似乎是令人興奮的。 – user1471980

0

這是你在找什麼?

$(document).ready(function() { 
     $('div:empty').hide(); 
}); 
+0

不,hide()不適用於我 – user1471980

+0

.remove()? – endyourif

0

假設你的div有比圖像以外的元素如果有如果你只想隱藏元素,你可以試試這個

var elems = $('#div1, #div2, #div3 , #div4, #div5', #div6); 
$.each(elems , function(){ 
    if($(this).children.length() < 1)){ 
     $(this).hide() 
    } 
});