2010-08-22 27 views
0

我刚刚开始使用jQuery。我正在使用它来创建一个照片库,从Flickr中提取照片和他们的信息。该脚本如下所示jQuery .each()从0以外的索引开始

<html> 
<head> 
    <title>Flickr Test</title> 

<script src="http://rhol.squarespace.com/storage/js/jquery.js" type="text/javascript"></script> 
<script src="http://rhol.squarespace.com/storage/js/fancybox/jquery.fancybox-1.3.1.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="http://rhol.squarespace.com/storage/js/fancybox/jquery.fancybox-1.3.1.css" media="screen" /> 



<script> 
$.getJSON("http://api.flickr.com/services/rest/?method=flickr.photosets.getInfo&api_key=db05e5f5e5c2151218cc06545aaae27e&photoset_id=72157624591740770&format=json&jsoncallback=?", 
    function(data2){ 
    $("#setName").text(data2.photoset.title._content); 
    $("#setDesc").text(data2.photoset.description._content); 
    }); 
    $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=db05e5f5e5c2151218cc06545aaae27e&photoset_id=72157624591740770&format=json&jsoncallback=?", 
     function(data1){ 
      $.each(data1.photoset.photo, function(k,item){ 
       var baseurl = 'http://farm'+item.farm+'.static.flickr.com/'+item.server+'/'+item.id+'_'+item.secret; 
       $("<tr><td id=\"image"+k+"\"><a> </a></td><td id=\"desc"+k+"\"></td></tr><tr />").appendTo("#images"); 
       $("#image"+k+" > a").attr("href",baseurl + "_b.jpg").attr("rel","mylightbox[photoset]").attr("class","gallery"); 
       $("<img/>").attr("src",baseurl+'_m.jpg').appendTo("#image"+k+" > a"); 
       $("a.gallery").fancybox({'titlePosition':'inside'}); 
       $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=db05e5f5e5c2151218cc06545aaae27e&photo_id="+item.id+"&format=json&jsoncallback=?", 
       function(data2){ 
        $("#desc"+k).text(data2.photo.description._content); 
     $("#image"+k+" > a").attr("title",data2.photo.description._content); 
       }); 
      }); 
     }); 
</script> 

</head> 
<body> 
    <a name="top"></a><br /> 
    <h1 id="setName"></h1> 
<h3 id="setDesc"></h3> 
    <br /> 
<table id="images"> 
</table> 
    <a href="#top">top</a> 
</body> 

我的问题是,这个脚本看来,如果有太多的照片,锁​​定浏览器。我想要做的是让它加载50张照片,然后再加上另一张50页。但是,我不确定如何使每个从json对象中的第50项开始,而不是第一个。当k == 50时,我可以通过返回false来让它停在50。如果有人能给我一个例子,说明如何做到这一点,我会欣赏它。提前致谢。

回答

3

当你有一个JavaScript阵列,而不是一个jQuery对象,你在数组类,而不是slice方法jQuery中使用slice方法:

$.each(data1.photoset.photo.slice(50, 100), function(k,item){ 
1
.slice(a,b).each() 
+0

我试图添加$ .slice(50,100).each(...),但它然后无法运行。照片不显示,Firebug将其显示为错误。 – rhololkeolke 2010-08-22 04:33:30

2

我知道你在想do包含在flickr.photosets.getPhotos上的Flickr API文档中。检查per_page选项。

+0

你的权利,api涵盖了这一点(我应该先检查一下),但由于其他答案解释了如何从不同的角度开始每一个我都接受这个答案。 – rhololkeolke 2010-08-22 05:11:57

+0

+1用于更接近数据源。只需在脚本中限制数组是最简单的解决方案,但考虑限制您获取的值应该值得额外工作。 – Guffa 2010-08-22 16:17:56

相关问题