62 lines
1.9 KiB
JavaScript
Executable file
62 lines
1.9 KiB
JavaScript
Executable file
/**
|
|
* Taken from jQuery UI accordion and fixed, special hoverintent event
|
|
* http://benalman.com/news/2010/03/jquery-special-events/
|
|
*/
|
|
!function($) {
|
|
|
|
|
|
var cfg = {
|
|
sensitivity: 9,
|
|
interval: 50
|
|
};
|
|
|
|
|
|
$.event.special.hoverintent = {
|
|
setup: function() {
|
|
$(this).on("mouseover", handler);
|
|
},
|
|
|
|
teardown: function() {
|
|
$(this).on("mouseover", handler);
|
|
},
|
|
|
|
cfg: cfg
|
|
};
|
|
|
|
function handler(event) {
|
|
|
|
var self = this,
|
|
args = arguments,
|
|
target = $(event.target),
|
|
cX, cY, pX, pY;
|
|
|
|
function track(event) {
|
|
cX = event.pageX;
|
|
cY = event.pageY;
|
|
};
|
|
pX = event.pageX;
|
|
pY = event.pageY;
|
|
|
|
function clear() {
|
|
target.off("mousemove", track).off("mouseout", clear);
|
|
clearTimeout(timeout);
|
|
}
|
|
|
|
function handler() {
|
|
if((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
|
|
clear();
|
|
event.type = "hoverintent";
|
|
jQuery.event.simulate("hoverintent", event.target, $.event.fix(event), true);
|
|
} else {
|
|
pX = cX;
|
|
pY = cY;
|
|
timeout = setTimeout(handler, cfg.interval);
|
|
}
|
|
}
|
|
var timeout = setTimeout(handler, cfg.interval);
|
|
target.mousemove(track).mouseout(clear);
|
|
return true;
|
|
}
|
|
|
|
|
|
}(jQuery);
|