1(function($) { 2 3 $.fn.iScroll = function(options, args) { 4 5 var lock = false; 6 7 var iscroll = this; 8 9 var container = $(this); 10 11 // Establish our default settings 12 var settings = $.extend({ 13 threshold : 500, 14 scrollContainer : $(window), 15 contentContainer: $(document), 16 callbacks : {} 17 }, options); 18 19 var init = function(){ 20 var scrollContainer = settings.scrollContainer; 21 var contentContainer = settings.contentContainer; 22 scrollContainer.on('scroll.iscroll', function () { 23 if ($('.modal:visible').length) { 24 return; 25 } 26 27 var pixelsTillEnd = Math.abs(scrollContainer.scrollTop() - (contentContainer.height() - $(window).height()) ); 28 29 if (pixelsTillEnd <= settings.threshold) { 30 iscroll.trigger(); 31 } 32 }).trigger('scroll.iscroll'); 33 }; 34 35 this.trigger = function() { 36 if (lock) { 37 return; 38 } 39 40 lock = true; 41 $('.loading[data-trigger="iscroll"]').show(); 42 var itemSelector = container.data('selector'); 43 44 // Get last shout ID if not initialized 45 var data = data || { 46 page: container.data('page') + 1, 47 last: container.children(itemSelector+':last').data('fetchid') 48 }; 49 50 fetch(container.data('fetch'), data); 51 }; 52 53 var fetch = function (url, _data) { 54 $.ajax({ 55 url: url, 56 data: _data, 57 success: function(response){ 58 if (response) { 59 // callbacks.success(response); 60 successCb(response, _data); 61 } else { 62 this.error(); 63 } 64 65 //Ejecucion de scripts que vienen por Ajax 66 var responseScript = $(response).filter('script'); 67 $.each(responseScript, function(i, script) { 68 eval($(script).html()); 69 }); 70 }, 71 error: function(response){ 72 $('.loading[data-trigger="iscroll"]').hide(); 73 settings.scrollContainer.unbind('scroll.iscroll'); 74 }, 75 complete: function(response){ 76 lock = false; 77 $('.loading[data-trigger="iscroll"]').hide(); 78 }, 79 }); 80 }; 81 82 var successCb = function (response, data) { 83 container.data('page', data.page); 84 var itemSelector = container.data('selector'); 85 86 var after_index = -1; 87 var after_id = data.last; 88 if (after_id) { 89 $(response).filter(itemSelector).each(function (index, elem) { 90 if (elem.id == after_id) { 91 after_index = index; 92 } 93 }); 94 } 95 96 $(response).filter(itemSelector).each(function (index, elem) { 97 if (index > after_index && $('#' + elem.id).length === 0) { 98 $(elem).appendTo(container); 99 } 100 }); 101 102 // Update last 103 data.last = container.children(itemSelector+':last').data('fetchid'); 104 105 if(settings.callbacks.success){ 106 settings.callbacks.success(response); 107 } 108 }; 109 110 return this.each( function() { 111 init(); // Bind scroll events to scroll container 112 }); 113 114 } 115 116}(jQuery));
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.