PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.2
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.2
4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 4.2.0 All 139 releases
learnpress / assets / js / vendor / jquery / jquery-appear.js

jquery-appear.js in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.2, at assets/js/vendor/jquery/jquery-appear.js

103 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 : 250,
18 force_process: false
19 }
20 var $window = $(window);
21
22 var $prior_appeared;
23
24 function process() {
25 check_lock = false;
26 for (var index = 0; index < selectors.length; index++) {
27 var $appeared = $(selectors[index]).filter(function () {
28 return $(this).is(':appeared');
29 });
30
31 $appeared.trigger('appear', [$appeared]);
32
33 if ($prior_appeared) {
34 var $disappeared = $prior_appeared.not($appeared);
35 $disappeared.trigger('disappear', [$disappeared]);
36 }
37 $prior_appeared = $appeared;
38 }
39 }
40
41 // "appeared" custom filter
42 $.expr[':']['appeared'] = function (element) {
43 var $element = $(element);
44 if (!$element.is(':visible')) {
45 return false;
46 }
47
48 var window_left = $window.scrollLeft();
49 var window_top = $window.scrollTop();
50 var offset = $element.offset();
51 var left = offset.left;
52 var top = offset.top;
53
54 if (top + $element.height() >= window_top &&
55 top - ($element.data('appear-top-offset') || 0) <= window_top + $window.height() &&
56 left + $element.width() >= window_left &&
57 left - ($element.data('appear-left-offset') || 0) <= window_left + $window.width()) {
58 return true;
59 } else {
60 return false;
61 }
62 }
63
64 $.fn.extend({
65 // watching for element's appearance in browser viewport
66 appear: function (options) {
67 var opts = $.extend({}, defaults, options || {});
68 var selector = this.selector || this;
69 if (!check_binded) {
70 var on_check = function () {
71 if (check_lock) {
72 return;
73 }
74 check_lock = true;
75
76 setTimeout(process, opts.interval);
77 };
78
79 $(window).scroll(on_check).resize(on_check);
80 check_binded = true;
81 }
82
83 if (opts.force_process) {
84 setTimeout(process, opts.interval);
85 }
86 selectors.push(selector);
87 return $(selector);
88 }
89 });
90
91 $.extend({
92 // force elements's appearance check
93 force_appear: function () {
94 if (check_binded) {
95 process();
96 return true;
97 }
98 ;
99 return false;
100 }
101 });
102 })(jQuery);
103