1(function ( $,window, document ) { 2 3 $.fn.infiniteLoad = function(options) { 4 5 var settings = $.extend({ 6 navSelector: '', //Navigation selector/Pagination selector e.g. "nav.navigation" 7 contentSelector: '',//Main content element selector e.g. #main 8 nextSelector: '',//Navigation next element selector e.g. nav.navigation a.next 9 itemSelector: '',//Item container element in loop e.g. article.post 10 paginationType: 'infinite',//Pagination type Infinite scroll or Load more button.Default "infinite" 11 loadingImage:'',//Loading image url.Default null 12 loadingButtonLabel: 'Load More',//Load more button text.Default "Load More" 13 loadingButtonClass: '',//Load more button additional class.Default null 14 loadingFinishedText: 'No More Posts Available',//Text to show when loading is finished.Default "No More Posts Available" 15 }, options ); 16 17 var loading=false; 18 var loaded=false; 19 var url=false; 20 var infiniteHtml=''; 21 var moreHtml=''; 22 23 24 var _init=function() 25 { 26 //check if all the elements given are correct 27 if($(settings.navSelector).length && $(settings.contentSelector).length && $(settings.nextSelector).length && $(settings.itemSelector).length) 28 { 29 url=$(settings.nextSelector).attr( 'href' ); 30 _setup_element(); 31 } 32 else 33 { 34 return false; 35 } 36 } 37 38 var _setup_element=function(){ 39 40 $(settings.navSelector).hide(); 41 42 infiniteHtml=((settings.loadingImage!='')?'<img src="'+settings.loadingImage+'" />':''); 43 moreHtml='<input type="button" class="'+settings.loadingButtonClass+'" value="'+settings.loadingButtonLabel+'" />'; 44 45 switch(settings.paginationType) { 46 case 'infinite': 47 $(settings.navSelector).before('<div class="pix-wrapper pix-loader">'+infiniteHtml+'</div>'); 48 break; 49 case 'more': 50 $(settings.navSelector).before('<div class="pix-wrapper pix-load-more">'+moreHtml+'</div>'); 51 break; 52 default: 53 $(settings.navSelector).before('<div class="pix-wrapper">Loading.....</div>'); 54 } 55 56 } 57 58 var _load=function(){ 59 60 //check if url exixts 61 if(!url) 62 return false; 63 64 loading = true; 65 66 var lastElem = $( settings.contentSelector ).find( settings.itemSelector ).last(); 67 68 //custom trigger when start loading 69 $(document).trigger('pix_infinite_load_start'); 70 71 // ajax call 72 $.ajax({
73 // params 74 url : url, 75 dataType : 'html', 76 success : function (response) { 77 78 loading = false; 79 80 if(settings.paginationType=='infinite') 81 $('.pix-loader').hide(); 82 83 84 var obj = $(response), 85 elem = obj.find( settings.itemSelector ), 86 next = obj.find( settings.nextSelector ); 87 88 lastElem.after( elem ); 89 90 //custom trigger when successfully loaded 91 $(document).trigger('pix_infinite_load_success'); 92 93 if( next.length ) { 94 url = next.attr( 'href' ); 95 } 96 else { 97 loaded=true; 98 99 //custom trigger when successfully loaded all pages 100 $(document).trigger('pix_infinite_load_complete'); 101 102 } 103 104 } 105 }); 106 107 }; 108 109 $(window).on('scroll',function(){ 110 111 if(! loading && ! loaded && settings.paginationType=='infinite' && $(window).scrollTop() >= $(settings.itemSelector).last().offset().top + $(settings.itemSelector).last().outerHeight() - window.innerHeight) 112 { 113 _load(); 114 } 115 }); 116 117 $(document).on('click','.pix-load-more',function(){ 118 if(! loading && ! loaded && settings.paginationType=='more'){ 119 120 $('.pix-wrapper').html(infiniteHtml); 121 122 _load(); 123 } 124 }); 125 126 $(document).on('pix_infinite_load_start',function(){ 127 if(settings.paginationType=='infinite') 128 $('.pix-wrapper').show(); 129 }); 130 131 $(document).on('pix_infinite_load_success',function(){ 132 if(settings.paginationType=='infinite') 133 $('.pix-wrapper').hide(); 134 else if(settings.paginationType=='more') 135 $('.pix-wrapper').html(moreHtml); 136 }); 137 138 $(document).on('pix_infinite_load_complete',function(){ 139 $('.pix-wrapper').html(settings.loadingFinishedText).show(); 140 }); 141 142 //Initialization 143 _init(); 144 145 146 }; 147 148}( jQuery,window, document ));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.