1 | /*!
|
---|
2 | * hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+
|
---|
3 | * http://cherne.net/brian/resources/jquery.hoverIntent.html
|
---|
4 | *
|
---|
5 | * You may use hoverIntent under the terms of the MIT license. Basically that
|
---|
6 | * means you are free to use hoverIntent as long as this header is left intact.
|
---|
7 | * Copyright 2007, 2014 Brian Cherne
|
---|
8 | */
|
---|
9 |
|
---|
10 | /* hoverIntent is similar to jQuery's built-in "hover" method except that
|
---|
11 | * instead of firing the handlerIn function immediately, hoverIntent checks
|
---|
12 | * to see if the user's mouse has slowed down (beneath the sensitivity
|
---|
13 | * threshold) before firing the event. The handlerOut function is only
|
---|
14 | * called after a matching handlerIn.
|
---|
15 | *
|
---|
16 | * // basic usage ... just like .hover()
|
---|
17 | * .hoverIntent( handlerIn, handlerOut )
|
---|
18 | * .hoverIntent( handlerInOut )
|
---|
19 | *
|
---|
20 | * // basic usage ... with event delegation!
|
---|
21 | * .hoverIntent( handlerIn, handlerOut, selector )
|
---|
22 | * .hoverIntent( handlerInOut, selector )
|
---|
23 | *
|
---|
24 | * // using a basic configuration object
|
---|
25 | * .hoverIntent( config )
|
---|
26 | *
|
---|
27 | * @param handlerIn function OR configuration object
|
---|
28 | * @param handlerOut function OR selector for delegation OR undefined
|
---|
29 | * @param selector selector OR undefined
|
---|
30 | * @author Brian Cherne <brian(at)cherne(dot)net>
|
---|
31 | */
|
---|
32 |
|
---|
33 | (function(e){e.fn.hoverIntent=function(t,n,r){var i={interval:100,sensitivity:6,timeout:0};if(typeof t==="object"){i=e.extend(i,t)}else if(e.isFunction(n)){i=e.extend(i,{over:t,out:n,selector:r})}else{i=e.extend(i,{over:t,out:t,selector:n})}var s,o,u,a;var f=function(e){s=e.pageX;o=e.pageY};var l=function(t,n){n.hoverIntent_t=clearTimeout(n.hoverIntent_t);if(Math.sqrt((u-s)*(u-s)+(a-o)*(a-o))<i.sensitivity){e(n).off("mousemove.hoverIntent",f);n.hoverIntent_s=true;return i.over.apply(n,[t])}else{u=s;a=o;n.hoverIntent_t=setTimeout(function(){l(t,n)},i.interval)}};var c=function(e,t){t.hoverIntent_t=clearTimeout(t.hoverIntent_t);t.hoverIntent_s=false;return i.out.apply(t,[e])};var h=function(t){var n=e.extend({},t);var r=this;if(r.hoverIntent_t){r.hoverIntent_t=clearTimeout(r.hoverIntent_t)}if(t.type==="mouseenter"){u=n.pageX;a=n.pageY;e(r).on("mousemove.hoverIntent",f);if(!r.hoverIntent_s){r.hoverIntent_t=setTimeout(function(){l(n,r)},i.interval)}}else{e(r).off("mousemove.hoverIntent",f);if(r.hoverIntent_s){r.hoverIntent_t=setTimeout(function(){c(n,r)},i.timeout)}}};return this.on({"mouseenter.hoverIntent":h,"mouseleave.hoverIntent":h},i.selector)}})(jQuery)
|
---|