2010-06-08 125 views
1

我正在开发我自己的lightbox类的jquery插件。一切正常,但我想隐藏加载的内容,直到图像从AJAX调用加载到浏览器中。我发现了一个类似的帖子,我正在使用下面的脚本,但是setTimeout函数揭示了内容而不是.load函数。我是否想要实现不可能的目标?图片加载后显示AJAX内容

$.ajax({ 
     url: 'meet/'+ pLoad + '.html', 
     success: function(data) { 
     var imageCount = $(data).filter('img').length; 
     var imagesLoaded = 0; 
     $(data).hide() 
     .appendTo('#zoom_inner') 
     .filter('img') 
     .load(function() { 
      ++imagesLoaded; 
      if (imagesLoaded >= imageCount) { 
      $('#zoom_inner').children().show(); 
      } 
      }); 
     setTimeout(function() { $('#zoom_inner').children().show() }, 5000); 
     } 
    }); 
+0

您可以点亮您的代码并按编辑器工具栏中的'代码'按钮(1和0的按钮)给我们吗? – 2010-06-08 14:33:19

+0

对不起,关于这个... setTimeout函数是在那里加载函数不起作用。这是肯定的情况...这是一个工作演示,http://dev.alcostores.com/abt_career_meet.aspx – bgreater 2010-06-08 14:41:20

回答

0

关于你的评论:

数据仅仅是在你的成功回调字符串 - 这是“HTML”,但它是一个字符串。

让它使用节点:

var $images = $(data); // i.e. turn <div><img /></div> into a div with an img as a child or whatever you got 
var imageCount = $images.find('img').length; 

酷,不是吗?

+0

http://dev.alcostores.com/abt_career_meet.aspx – bgreater 2010-06-08 14:41:47

+0

你测试过任何变量吗? imageCount是否正确计数?图像加载增加?即使'alert(imagesLoaded);''++ imagesLoaded;'之后'将有助于验证。 – 2010-06-08 15:11:04

+0

现在这样做,并且imageCount不会递增过去0 现在排除故障。任何想法为什么不会$(data).filter('img')。length;只会返回0 – bgreater 2010-06-08 15:29:51