Skip to content

Commit 0cf875e

Browse files
committed
Accordion demo: Clean up hoverintent implementation to avoid using jQuery.event.handle. Thanks Drew Waddell for pointing out the use of an undocumented/deprecated method.
1 parent 948563b commit 0cf875e

File tree

1 file changed

+38
-23
lines changed

1 file changed

+38
-23
lines changed

demos/accordion/hoverintent.html

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
});
1717
});
1818

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+
*/
2424
$.event.special.hoverintent = {
2525
setup: function() {
2626
$( this ).bind( "mouseover", jQuery.event.special.hoverintent.handler );
@@ -29,41 +29,56 @@
2929
$( this ).unbind( "mouseover", jQuery.event.special.hoverintent.handler );
3030
},
3131
handler: function( event ) {
32-
var that = this,
32+
var currentX, currentY, timeout,
3333
args = arguments,
3434
target = $( event.target ),
35-
cX, cY, pX, pY;
35+
previousX = event.pageX,
36+
previousY = event.pageY;
3637

3738
function track( event ) {
38-
cX = event.pageX;
39-
cY = event.pageY;
39+
currentX = event.pageX;
40+
currentY = event.pageY;
4041
};
41-
pX = event.pageX;
42-
pY = event.pageY;
42+
4343
function clear() {
4444
target
4545
.unbind( "mousemove", track )
46-
.unbind( "mouseout", arguments.callee );
46+
.unbind( "mouseout", clear );
4747
clearTimeout( timeout );
4848
}
49+
4950
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 ) {
5156
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
5465
// is fired asynchronously and the old event is no longer
5566
// usable (#6028)
56-
event.originalEvent = {};
57-
jQuery.event.handle.apply( that, args );
67+
delete event.originalEvent;
68+
69+
target.trigger( event );
5870
} else {
59-
pX = cX;
60-
pY = cY;
61-
timeout = setTimeout( handler, cfg.interval );
71+
previousX = currentX;
72+
previousY = currentY;
73+
timeout = setTimeout( handler, 100 );
6274
}
6375
}
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+
});
6782
}
6883
};
6984
</script>

0 commit comments

Comments
 (0)