1/* 2 * jQuery appear plugin 3 * 4 * Copyright (c) 2012 Andrey Sidorov 5 * licensed under MIT license. 6 * 7 * https://github.com/morr/jquery.appear/ 8 * 9 * Version: 0.3.3 10 */ 11(function($) { 12 var selectors = []; 13 14 var check_binded = false; 15 var check_lock = false; 16 var defaults = { 17 interval: 0, //250, 18 force_process: false, 19 //mios 20 appear_top_offset: $('body').is('.telefono') ? 2000 : 1000, //1000, 21 appear_left_offset: $('body').is('.telefono') ? 2000 : 1000, //1000, 22 //appear_top_offset: 1000, 23 //appear_left_offset: 1000, 24 } 25 var $window = $(window); 26 27 var $prior_appeared; 28 29 function process() { 30 check_lock = false; 31 for (var index = 0; index < selectors.length; index++) { 32 var $appeared = $(selectors[index]).filter(function() { 33 return $(this).is(':appeared'); 34 }); 35 36 $appeared.trigger('appear', [$appeared]); 37 38 if ($prior_appeared) { 39 var $disappeared = $prior_appeared.not($appeared); 40 $disappeared.trigger('disappear', [$disappeared]); 41 } 42 $prior_appeared = $appeared; 43 } 44 } 45 46 // "appeared" custom filter 47 $.expr[':']['appeared'] = function(element) { 48 var $element = $(element); 49 if (!$element.is(':visible')) { 50 return false; 51 } 52 53 var window_left = $window.scrollLeft(); 54 var window_top = $window.scrollTop(); 55 var offset = $element.offset(); 56 var left = offset.left; 57 var top = offset.top; 58 if (top + $element.height() >= window_top && 59 //top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() && 60 top - (defaults.appear_top_offset) <= window_top + $window.height() && 61 left + $element.width() >= window_left && 62 //left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) { 63 left - (defaults.appear_left_offset) <= window_left + $window.width()) { 64 return true; 65 } else { 66 return false; 67 } 68 } 69 70 $.fn.extend({ 71 // watching for element's appearance in browser viewport 72 appear: function(options) { 73 var opts = $.extend({}, defaults, options || {}); 74 var selector = this.selector || this; 75 if (!check_binded) { 76 var on_check = function() { 77 if (check_lock) { 78 return; 79 } 80 check_lock = true; 81 82 setTimeout(process, opts.interval); 83 }; 84 85 $(window).scroll(on_check).resize(on_check); 86 87 check_binded = true; 88 } 89 90 if (opts.force_process) { 91 setTimeout(process, opts.interval); 92 } 93 selectors.push(selector); 94 return $(selector); 95 } 96 }); 97 98 $.extend({ 99 // force elements's appearance check 100 force_appear: function() { 101 if (check_binded) { 102 process(); 103 return true; 104 }; 105 return false; 106 } 107 }); 108})(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.