请看这个小提琴
忽略 CSS,它并不重要。
这段jQuery
代码的目的是告诉与鼠标进入的方向相反的方向.container
。我知道它看起来很丑陋,但请暂时忽略它。方向是n
(对于北方),ne
(对于东北)等等......
现在如果你像疯子一样打开console
并移动鼠标div.container
,最终你会undefined
在console
. (div.container
不可见并围绕圆形按钮)
值仅在inundefined
时才可能,这意味着在输入时位于(球形按钮)内,这是不可能的。x === 0 && y === 0
getMovementDirection()
mouse
div.container
div.button
所以,我的问题是,该代码中发生了什么?
-感谢帮助
PS:
标题需要改进。
jQuery code
(function($) {
var $container = $('div.container'),
$button = $('div.button');
$container.on('mouseenter', function(e) {
var mouseLocation = {
x: e.pageX,
y: e.pageY
}
var buttonLocation = {
x: $button.offset().left,
y: $button.offset().top
}
var loc = getMovementDirection (mouseLocation, buttonLocation, jQuery);
console.log(loc);
});
})(jQuery);
function getMovementDirection (mouse, container, $) {
var width = $('div.button').outerWidth(),
height = $('div.button').outerHeight();
var x, y;
if (mouse.x < container.x) { x = -1; }
else if (mouse.x < container.x + width) { x = 0; }
else { x = 1; }
if (mouse.y < container.y) { y = -1; }
else if (mouse.y < container.y + width) { y = 0; }
else { y = 1; }
if ( x === -1 && y === -1 ) { return 'se'; }
else if ( x === 0 && y === -1 ) { return 's'; }
else if ( x === 1 && y === -1 ) { return 'sw'; }
else if ( x === -1 && y === 0 ) { return 'e'; }
// x === 0 && y === 0 is forbidden
else if ( x === 1 && y === 0 ) { return 'w'; }
else if ( x === -1 && y === 1 ) { return 'ne'; }
else if ( x === 0 && y === 1 ) { return 'n'; }
else if ( x === 1 && y === 1 ) { return 'nw'; }
}