单个图像加载后显示div

时间:2011-04-13 07:55:59

标签: jquery image html load show

让我们说我有这样一组图像:

<div class="image"><img src="image1.jpg" alt="" />image1</div>
<div class="image"><img src="image2.jpg" alt="" />image2</div>
<div class="image"><img src="image3.jpg" alt="" />image3</div>

(请注意div s最初会被隐藏)

我想要的是,在个人<image>加载后,.show();围绕它div.image

我认为这很容易做到,但我已经在互联网上进行了搜索,到目前为止他们一直在做的事情是在所有图像加载后而不是单个图像。

这甚至可以吗?

编辑: 它后来被改变,因此图像周围也有链接 工作示例:http://jsfiddle.net/peeter/qwtWZ/6/

5 个答案:

答案 0 :(得分:7)

<div class="image"><img src="http://acupuncture.celeboutfit.com/images/img/IMG_5400m-1.jpg" alt="" />image1</div>
<div class="image"><img src="image2.jpg" alt="" />image2</div>
<div class="image"><img src="image3.jpg" alt="" />image3</div>
<script type="text/javascript">
$(document).ready(function(){
    $("div.image").hide();
    $("div.image").find("img").load(function(){
        $(this).closest("div.image").show(500);
    });
});
</script>

工作示例:http://jsfiddle.net/peeter/qwtWZ/6/

答案 1 :(得分:3)

$(".image img").load(function()
{
    $(this).closest(".image").show();
});

修改:已更新,以允许作为后代的图片,但不一定是子图片。

答案 2 :(得分:2)

$(document).ready(function(){
  $('img').load(function(){
    $(this).parent().show();
  });
});

应该工作得很好!

答案 3 :(得分:1)

您可以使用jQuery加载图像

$("#img1").load('image1.jpg',function(){ $("#img1").show(); });
$("#img2").load('image2.jpg',function(){ $("#img2").show(); });
$("#img3").load('image3.jpg',function(){ $("#img3").show(); });

您将上述ID提供给您的div。当资源加载完成后,将调用load()函数中的函数。

有关函数参考,请参阅http://api.jquery.com/load/

答案 4 :(得分:0)

我必须这样做以防止FOUC,但我不想在页面顶部加载很棒但很重的jQuery,所以我写了这个实用程序脚本。在我的示例中,图像的父容器被隐藏,直到图像被加载。适合我。

(function() {

  function getArrayFromNodeList(list) {
    return Array.prototype.slice.call(list);
  }

  function ready() {
    var imageContent = document.querySelectorAll('.hero, .key-features__feature'),
      contentArray = getArrayFromNodeList(imageContent);

    contentArray.forEach(function(content) {
      var images = getArrayFromNodeList(content.querySelectorAll('img'));

      images.forEach(function(img) {
        img.onload = function() {
          console.log('img loaded');
          content.style.display = 'block';
        };
      });
    });
  }

  document.addEventListener("DOMContentLoaded", ready);

}());
.hero,
.keyfeatures__feature {
  display: none;
}
<!-- Example of one piece of content -->
<article class="hero">
  <!-- This is the image I want to make sure has loaded -->
  <img src="https://placeimg.com/978/400/animals/grayscale" alt="">

  <!-- other HTML content -->
</article>
<!-- /hero -->

<!-- Example of another piece of content -->
<article class="key-features">
  <div class="key-features__feature">
    <img src="https://placeimg.com/480/320/animals/grayscale" alt="">
  </div>
  <!-- /key-features__feature -->

  <div class="key-features__feature">
    <img src="https://placeimg.com/480/320/animals/grayscale" alt="">
  </div>
  <!-- /key-features__feature -->
</article>
<!-- /key-features 6-6 -->