2010-02-26 44 views
0

所以我有一个相当不错的应用程序将使用ui-tabs ..问题是,我不能为我的生活找出一种方法来预加载图像在我的ajax显示标签面板之前的内容。我能想到的唯一的办法就是为标签面板内容的加载创建自己的Ajax功能,并加入像这样的Ajax调用:使用jQueryUI-tabs预加载AJAX内容的图像

success: function(response){ 
    $(response).find('img').preload({ 
      onFinish: function(){ 
        currentTabPanel.show(); 
      } 
    }); 

}

但我想有GOT是使用jQueryUi.tabs()对象中内置的AJAX方法和事件去更好的方法..我只是不认为我看到它... arg ..任何想法??

回答

0

什么是响应?它代表什么?

假设你有一个名为imgList表示图像对象的列表:

var imagePreloader = new Image(); 

if(imgList.length != 0) 
{ 
    imagePreloader.load(function() { 
     if(imgList.length != 0) 
     { 
     var img = imglist.pop(); 
     imagePreloader.src = img.imgSrc; 
     } 
     else 
     { 
     currentTabPanel.show(); 
     } 
    }); 

    imagePreloader.src = imgList.pop().imgSrc; 
} 
+0

响应只是一些HTML标记,它可能包含或不包含一些img标记。那么你将这个代码放在哪里,这样在代码完成加载之前,标签面板内容将不会显示? – RavenHursT 2010-02-26 19:56:00

0

这是一个肮脏的小剧本我有时会使用,但它的伟大工程:

var imgstopreload = new Array('file1.jpg', 'file2.jpg', 'etc.jpg'); 
for (x in imgstopreload){ 
    (new Image).src = imgstopreload[x]; 
} 

我不会这么做对于大量的大图像,因为页面将不会完成加载,直到图像完成,但如果你必须准备好它,它的工作原理。只是把它放在你的索引中:)

+0

是的..唯一的问题是,AJAX内容中的图像是动态的。我无法知道图像的名称。这就是为什么我有$(响应).find('img').preload()代码上面...谢谢虽然.. – RavenHursT 2010-02-26 18:46:13