8 lines
1.6 KiB
JavaScript
8 lines
1.6 KiB
JavaScript
/*
|
|
* jQuery.appear
|
|
* http://code.google.com/p/jquery-appear/
|
|
*
|
|
* Copyright (c) 2009 Michael Hixson
|
|
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
|
|
*/
|
|
(function ($) { $.fn.appear = function (f, o) { var s = $.extend({ one: true }, o); return this.each(function () { var t = $(this); t.appeared = false; if (!f) { t.trigger('appear', s.data); return; } var w = $(window); var c = function () { if (!t.is(':visible')) { t.appeared = false; return; } var a = w.scrollLeft(); var b = w.scrollTop(); var o = t.offset(); var x = o.left; var y = o.top; if (y + t.height() >= b && y <= b + w.height() && x + t.width() >= a && x <= a + w.width()) { if (!t.appeared) t.trigger('appear', s.data); } else { t.appeared = false; } }; var m = function () { t.appeared = true; if (s.one) { w.unbind('scroll', c); var i = $.inArray(c, $.fn.appear.checks); if (i >= 0) $.fn.appear.checks.splice(i, 1); } f.apply(this, arguments); }; if (s.one) t.one('appear', s.data, m); else t.bind('appear', s.data, m); w.scroll(c); $.fn.appear.checks.push(c); (c)(); }); }; $.extend($.fn.appear, { checks: [], timeout: null, checkAll: function () { var l = $.fn.appear.checks.length; if (l > 0) while (l--) ($.fn.appear.checks[l])(); }, run: function () { if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout); $.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20); } }); $.each(['append', 'prepend', 'after', 'before', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'remove', 'css', 'show', 'hide'], function (i, n) { var u = $.fn[n]; if (u) { $.fn[n] = function () { var r = u.apply(this, arguments); $.fn.appear.run(); return r; } } }); })(jQuery); |