2010-06-08 161 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