Skip to content

Commit

Permalink
hoverIntent r6. fixes #19311.
Browse files Browse the repository at this point in the history
git-svn-id: http://core.svn.wordpress.org/trunk@19605 1a063a9b-81f0-0310-95a4-ce76da25c4cd
  • Loading branch information
nacin committed Dec 20, 2011
1 parent 48309d1 commit 6fd2d56
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 31 deletions.
38 changes: 8 additions & 30 deletions wp-includes/js/hoverIntent.dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* to see if the user's mouse has slowed down (beneath the sensitivity
* threshold) before firing the onMouseOver event.
*
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
*
* hoverIntent is currently available for use in all personal or commercial
Expand All @@ -25,7 +25,7 @@
*
* @param f onMouseOver function || An object with configuration options
* @param g onMouseOut function || Nothing (use configuration options object)
* @author Brian Cherne <brian@cherne.net>
* @author Brian Cherne brian(at)cherne(dot)net
*/
(function($) {
$.fn.hoverIntent = function(f,g) {
Expand Down Expand Up @@ -72,48 +72,26 @@
ob.hoverIntent_s = 0;
return cfg.out.apply(ob,[ev]);
};

// workaround for Mozilla bug: not firing mouseout/mouseleave on absolute positioned elements over textareas and input type="text"
var handleHover = function(e) {
var t = this;

// next two lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
if ( p == this ) {
if ( $.browser.mozilla ) {
if ( e.type == "mouseout" ) {
t.mtout = setTimeout( function(){doHover(e,t);}, 30 );
} else {
if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
}
}
return;
} else {
if (t.mtout) { t.mtout = clearTimeout(t.mtout); }
doHover(e,t);
}
};

// A private function for handling mouse 'hovering'
var doHover = function(e,ob) {

var handleHover = function(e) {
// copy objects to be passed into t (required for event object to be passed in IE)
var ev = jQuery.extend({},e);
var ob = this;

// cancel hoverIntent timer if it exists
if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

// else e.type == "onmouseover"
if (e.type == "mouseover") {
// if e.type == "mouseenter"
if (e.type == "mouseenter") {
// set "previous" X and Y position based on initial entry point
pX = ev.pageX; pY = ev.pageY;
// update "current" X and Y position based on mousemove
$(ob).bind("mousemove",track);
// start polling interval (self-calling timeout) to compare mouse coordinates over time
if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}

// else e.type == "onmouseout"
// else e.type == "mouseleave"
} else {
// unbind expensive mousemove event
$(ob).unbind("mousemove",track);
Expand All @@ -123,6 +101,6 @@
};

// bind the function to the two event listeners
return this.mouseover(handleHover).mouseout(handleHover);
return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover);
};
})(jQuery);
2 changes: 1 addition & 1 deletion wp-includes/js/hoverIntent.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6fd2d56

Please sign in to comment.