무한가재-jsonp-폭포류 예

5558 단어
코드



    
    32
    


    
// 1、 。load //2、 ajax function isVisible($node) { var scrollH=$(window).scrollTop(), winH=$(window).height(), nodeOffset=$node.offset().top; if ((scrollH+winH)>=nodeOffset){ return true } else {return false} } var perPageCount=9, curPage=1; function getAndPlaceData() { if (isVisible($(".load"))){ $.ajax({ url:"http://platform.sina.com.cn/slide/album_tech", dataType: 'jsonp', jsonp:"jsoncallback", data:{ app_key:"1271687855", num: perPageCount, page:curPage } }).done(function (ret) { if (ret && ret.status && ret.status.code === "0"){ placeData(ret.data); }else{console.log("get ajax data error1")} }) .fail(function () { console.log("get ajax data error2") }) } } //3、 append ul , function placeData(nodelist) { var $nodes=renderData(nodelist); var arr=[]; $nodes.find("img").each(function () { var defer = $.Deferred(); $(this).load(function () { defer.resolve() }); arr.push(defer) }); $.when.apply(null,arr).done(function () { console.log("all pic loaded"); waterFall($nodes) }) } function renderData(data) { var str="", $nodes; for (var i=0;i<data.length;i++){ str+='<li class="content">'; str+='<a href="'+data[i].url+'">[ ……(2)]</a>'; str+='<h4>'+data[i].short_name+'</h4>'; str+='<p>'+data[i].short_intro+'</p>'; str+='</li>'; } $nodes=$(str); $(".ct").append($nodes); return $nodes; } var widthNum=parseInt($("#wrap").width()/$(".content").outerWidth(true)), allHeight=[]; for (var i=0;i<widthNum;i++){ allHeight.push(0) } function waterFall($nodes) { $($nodes).each(function () { var $cur=$(this), indx=0, minAllHeight=allHeight[0]; for (var j=0;j<allHeight.length;j++){ if (allHeight[j]<minAllHeight){ minAllHeight=allHeight[j]; indx=j; } } $cur.css({ "left":indx*$cur.outerWidth(true), "top":minAllHeight }); allHeight[indx]=minAllHeight+$cur.outerHeight(true); $(".ct").height(Math.max.apply(null,allHeight)); }) } getAndPlaceData(); $(window).on("scroll",function () { getAndPlaceData(); })

2. 미리 보기 주소:
https://github.com/have-not-BUG/task/blob/master/renwu/renwu32/renwu32.html
**본고의 판권은 본인에게 귀속됩니다. 이 계좌는 이미 압수되었으니 전재하려면 출처를 밝혀 주십시오.감사합니다!*

좋은 웹페이지 즐겨찾기