topical media & game development
lib-jquery-plugin-hover-jquery.js / js
/* Copyright (c) 2008 Brian Beck (exogen@gmail.com)
* MIT (http://www.opensource.org/licenses/mit-license.php) licensed.
*
* Version: 1.0
*
* Requires:
* jQuery 1.2+
* Dimensions (http://plugins.jquery.com/project/dimensions)
*/
(function(.extend({
ahover: {
version: 1.0,
defaults: {
toggleSpeed: 75,
toggleEffect: 'both',
hoverEffect: null,
moveSpeed: 250,
easing: 'swing',
className: 'ahover'
},
effects: {
'width': {width: 0},
'height': {height: 0},
'both': {width: 0, height: 0}
}
}
});
.extend({}, .ahover.effects[options.toggleEffect] : options.toggleEffect
);
var parent = this.offsetParent();
return this.hover(
function(e) {
var over = this;
var overSize = {
width: over.outerWidth(),
height: over.outerHeight()
};
var overOffset = over.offset();
var parentOffset = parent.offset();
var under = $('div.' + options.className, parent).stop();
var created = (under.length == 0);
if (created) {
under = $('<div> </div>')
.addClass(options.className)
.appendTo(parent).css(overSize);
}
var underOffset = {
left: overOffset.left - parentOffset.left -
(under.outerWidth() - under.width()) / 2,
top: overOffset.top - parentOffset.top -
(under.outerHeight() - under.height()) / 2
}
if (created) {
under.css(underOffset).css(effect).animate(overSize, {
queue: false,
duration: options.toggleSpeed,
easing: options.easing
});
}
else {
var underCSS = .isFunction(options.hoverEffect)) {
under.queue(options.hoverEffect);
}
},
function(e) {
$('div.' + options.className, parent).animate(effect, {
queue: false,
duration: options.toggleSpeed,
easing: options.easing,
complete: function() { this.remove(); }
});
}
);
}
});
})(jQuery);
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.