如果包含的图像为空,我想隐藏父元素

时间:2014-10-24 22:09:05

标签: javascript jquery

我有一个表格,其中包含一个包含div的单元格来保存图像。

我想要做的是,如果图像本身具有空src值,或者加载图像时出错,则将父单元格的显示设置为无。

该表实际上会列出页面中的一系列图像,并不是所有图像都会显示或显示错误。

下面的代码显示了表格单元格... {}中的信息实际上是作为文本文字传递的动态数据值。如果“img src”的值出错或为空,那么我想将TD的ID显示设置为“无。”

<td style="text-align: center; vertical-align: top; width: 400px;" id="{tag_itemid}">
<div class="image_container">
    <div class="border"> 
        <div class="boxSep">
            <div style="width: 250px; height: 250px; border-radius: 15px;" class="imgLiquidFill imgLiquid imgLiquid_bgSize imgLiquid_ready"> 
                <a title="{tag_name_nolink}" target="_blank" href="{tag_itemurl_nolink}" style="display: block; width: 100%; height: 100%;"> 
                    <img src="{tag_image (small)_value}" /> 
                 </a> 
             </div>
          </div>
    </div>
</div>

还要处理我的页面上只有单个表的情况,每个表格中有2个iamges,我希望为每个DIV设置display = none,因为图像src是无效的URL或者是src =“” - 见下面的例子

<table style="width: 100%;">
<tbody>
    <tr>
        <td>
        <div class="image_container_no_rollover icg_4" id="hldr1">
            <img src="http://lorempixel.com/400/200/" alt="">
        </div>
        <div id="hldr2" >
            <img style="border: 0px none;" src="http://lorempixel.com/400/250/" alt="">
        </div>
        </td>
    </tr>
</tbody>

4 个答案:

答案 0 :(得分:2)

以下是如何操作:

$(document).ready(function () {
    $("td").each(function () {
        var $img = $(this).find("img");
        if ($img[0] === undefined) return;

        var td = this;
        $(this).find("img").on("error", function () {
            $(td).css("display", "none");
        });
    });
});

检查出来:JSFiddle

答案 1 :(得分:0)

有几种方法可以实现这一目标。例如:

$('td').each(function() {
    if($(this).find('img').attr('src') == "your evaluator here"){
        $(this).css('display', 'none');
    }
});

当然,在运行该代码之前,请确保已加载整个DOM。

答案 2 :(得分:0)

我发现有人能够为我提供所需的解决方案,您可以通过更简单的示例查看下面两个案例的工作结果。

在回答第一部分时...隐藏所有表格单元格检查每个单元格中的每个图像,如果指定的图像无效或者src =“”

,则隐藏该单元格
$(document).ready(function() {
$("table").find("img").each(function(){
    if(!$(this).attr("src")){
        $(this).closest("td").hide();
    }else{
        var image = new Image(); 
        image.src = $(this).attr("src");
        if (image.width == 0) {
            $(this).closest("td").hide();
        }
    }
});

});

检查出来:[JSFiddle](http://jsfiddle.net/gregt57/wke7pbgm/11/

答案 3 :(得分:0)

在回答我的问题的第二部分...隐藏其子项包含无效图像的任何元素或src =“”

$(function() {
 $("#tbl01").find("img").each(function(){
  if(!$(this).attr("src")){
    $(this).parent().hide();
  }else{
   $(this).load(function(){
    // ... loaded  
   }).error(function(){
    // ... not loaded
    $(this).parent().hide();
   });
  }
 });
});

[JSFiddle]

上查看