Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery上区分mouseout/leave事件?_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jquery上区分mouseout/leave事件?

Javascript 如何在jquery上区分mouseout/leave事件?,javascript,jquery,Javascript,Jquery,有没有办法知道鼠标事件是否从元素的特定一侧离开?我的意思是,我有一个带有mouseover/mouseenter事件的DIV,我只想在鼠标离开DIV的左侧和右侧时触发该操作,但如果它从底部或顶部离开,则不应触发任何操作 提前谢谢。您可以检查的pageX和pageY属性,并将它们与相关元素的维度进行比较(例如,从和添加到/视情况而定)。这不是一种简单的方法,好吧,但可以完成 鼠标移出时,将鼠标位置与元素位置进行比较 请参见jQuery的鼠标位置教程: (它在教程中使用mousemove,但它也适

有没有办法知道鼠标事件是否从元素的特定一侧离开?我的意思是,我有一个带有mouseover/mouseenter事件的DIV,我只想在鼠标离开DIV的左侧和右侧时触发该操作,但如果它从底部或顶部离开,则不应触发任何操作


提前谢谢。

您可以检查的
pageX
pageY
属性,并将它们与相关元素的维度进行比较(例如,从和添加到/视情况而定)。

这不是一种简单的方法,好吧,但可以完成

鼠标移出时,将鼠标位置与元素位置进行比较

请参见jQuery的鼠标位置教程:


(它在教程中使用mousemove,但它也适用于mouseenter/mouseleave)

也许您可以使用mouseout jquery函数(或mouseleave?)并添加一个带有javascript的自定义处理程序,以获取元素的坐标、高度和宽度,并跟踪鼠标坐标是否超出边界


i、 e.您的mouse out事件激发,处理程序将元素定位在(x,y)->(10,10),高度为20,宽度为20。如果鼠标坐标在X上大于30,在Y上介于10和30之间,则鼠标的左侧在右侧。

对于jQuery,您可以使用事件的offsetX属性,如下所示:

$('#element').mouseout(function(e) {
    if (e.offsetX < 0 || e.offsetX > $(this).width()) {
        alert('out the side!');
    }
});
$(“#元素”).mouseout(函数(e){
如果(e.offsetX<0 | | e.offsetX>$(this).width()){
警惕(‘外面!’);
}
});

我不认为这个属性是可靠的跨浏览器(没有jQuery),我相信jQuery规范化了它(我已经在Chrome和IE7-9中测试过)。基本上,属性包含触发事件时光标相对于目标元素的位置。如果该值小于0或大于元素的宽度,则当光标离开元素边界时,您知道光标位于元素的左侧或右侧之外。

我意识到这是一个老问题,但我正在寻找类似的悬停效果。我发现


可能很方便…

这个脚本的版本是什么?