|
16 | 16 | });
|
17 | 17 | });
|
18 | 18 |
|
19 |
| - var cfg = ($.hoverintent = { |
20 |
| - sensitivity: 7, |
21 |
| - interval: 100 |
22 |
| - }); |
23 |
| - |
| 19 | + /* |
| 20 | + * hoverIntent | Copyright 2011 Brian Cherne |
| 21 | + * http://cherne.net/brian/resources/jquery.hoverIntent.html |
| 22 | + * modified by the jQuery UI team |
| 23 | + */ |
24 | 24 | $.event.special.hoverintent = {
|
25 | 25 | setup: function() {
|
26 | 26 | $( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler );
|
|
29 | 29 | $( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler );
|
30 | 30 | },
|
31 | 31 | handler: function( event ) {
|
32 |
| - var that = this, |
| 32 | + var currentX, currentY, timeout, |
33 | 33 | args = arguments,
|
34 | 34 | target = $( event.target ),
|
35 |
| - cX, cY, pX, pY; |
| 35 | + previousX = event.pageX, |
| 36 | + previousY = event.pageY; |
36 | 37 |
|
37 | 38 | function track( event ) {
|
38 |
| - cX = event.pageX; |
39 |
| - cY = event.pageY; |
| 39 | + currentX = event.pageX; |
| 40 | + currentY = event.pageY; |
40 | 41 | };
|
41 |
| - pX = event.pageX; |
42 |
| - pY = event.pageY; |
| 42 | + |
43 | 43 | function clear() {
|
44 | 44 | target
|
45 | 45 | .unbind( "mousemove", track )
|
46 |
| - .unbind( "mouseout", arguments.callee ); |
| 46 | + .unbind( "mouseout", clear ); |
47 | 47 | clearTimeout( timeout );
|
48 | 48 | }
|
| 49 | + |
49 | 50 | function handler() {
|
50 |
| - if ( ( Math.abs( pX - cX ) + Math.abs( pY - cY ) ) < cfg.sensitivity ) { |
| 51 | + var prop, |
| 52 | + orig = event; |
| 53 | + |
| 54 | + if ( ( Math.abs( previousX - currentX ) + |
| 55 | + Math.abs( previousY - currentY ) ) < 7 ) { |
51 | 56 | clear();
|
52 |
| - event.type = "hoverintent"; |
53 |
| - // prevent accessing the original event since the new event |
| 57 | + |
| 58 | + event = $.Event( "hoverintent" ); |
| 59 | + for ( prop in orig ) { |
| 60 | + if ( !( prop in event ) ) { |
| 61 | + event[ prop ] = orig[ prop ]; |
| 62 | + } |
| 63 | + } |
| 64 | + // Prevent accessing the original event since the new event |
54 | 65 | // is fired asynchronously and the old event is no longer
|
55 | 66 | // usable (#6028)
|
56 |
| - event.originalEvent = {}; |
57 |
| - jQuery.event.handle.apply( that, args ); |
| 67 | + delete event.originalEvent; |
| 68 | + |
| 69 | + target.trigger( event ); |
58 | 70 | } else {
|
59 |
| - pX = cX; |
60 |
| - pY = cY; |
61 |
| - timeout = setTimeout( handler, cfg.interval ); |
| 71 | + previousX = currentX; |
| 72 | + previousY = currentY; |
| 73 | + timeout = setTimeout( handler, 100 ); |
62 | 74 | }
|
63 | 75 | }
|
64 |
| - var timeout = setTimeout( handler, cfg.interval ); |
65 |
| - target.mousemove( track ).mouseout( clear ); |
66 |
| - return true; |
| 76 | + |
| 77 | + timeout = setTimeout( handler, 100 ); |
| 78 | + target.bind({ |
| 79 | + mousemove: track, |
| 80 | + mouseout: clear |
| 81 | + }); |
67 | 82 | }
|
68 | 83 | };
|
69 | 84 | </script>
|
|
0 commit comments