0

我在 div 中显示图像。如果图像不在 div 中,我目前正在隐藏 div。但是,根据页面中 div 的位置,如果 div 为空,我会在页面上看到木板点。如果 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').remove(),但这完全删除了 div。如果 div 在 jquery 中为空,有什么想法可以折叠它吗?

4

3 回答 3

0

引用.error jQuery 文档:

必须在浏览器触发错误事件之前附加事件处理程序,这就是示例在附加处理程序后设置 src 属性的原因。此外,当页面在本地提供时,错误事件可能不会正确触发;error 依赖于 HTTP 状态码,如果 URL 使用 file: 协议,一般不会触发。

换句话说,在您的代码中放置.errorafter :.attr

...
.error(function() {
  $('#div3').html("")
            .css({ border: '', margin: 0 })
            .hide();
}).attr('src', img_src)
...
于 2012-09-19T15:47:09.140 回答
0

这是你要找的吗?

$(document).ready(function() { 
       $('div:empty').hide(); 
});
于 2012-09-19T15:47:21.083 回答
0

假设您的 div 除了图像之外没有其他元素,如果有的话,您可以试试这个

var elems = $('#div1, #div2, #div3 , #div4, #div5', #div6);
$.each(elems , function(){
     if( $(this).children.length() < 1)){
       $(this).hide()
     }
});
于 2012-09-19T16:00:17.403 回答