如果我有这样的话:
有没有办法在BOTH div上触发鼠标悬停事件?
编辑:对不起所有..我试图简化问题所以很清楚理解,我忘了提到我有超过100个这样的div,所以可能这些解决方案不起作用。我要看看我是否可以对它们进行调整。非常感谢大家。
答案 0 :(得分:4)
我在这里用JSFiddle编写了一个工作示例:
http://jsfiddle.net/gfosco/CU5YT/
它类似于madeinstefanos的回答,但具体到你的例子..
var mouseX = 0;
var mouseY = 0;
var front = 0;
var back = 0;
function log(text) {
$("#log").append(text + '<BR>');
}
function mouseWithin(selector) {
var pos = $(selector).position();
var top = pos.top;
var left = pos.left;
var height = $(selector).height();
var width = $(selector).width();
if (mouseX >= left && mouseY >= top && mouseX <= left + width
&& mouseY <= top + height) {
return true;
}
return false;
}
$(document).bind('mousemove', function(e) {
mouseX = e.pageX;
mouseY = e.pageY;
if (front == 1 && !mouseWithin("#front")) {
front = 0;
log('Front Leave');
}
if (back == 1 && !mouseWithin("#back")) {
back = 0;
log('Back Leave');
}
if (front === 0 && mouseWithin("#front")) {
front = 1;
log('Front Hover');
}
if (back === 0 && mouseWithin("#back")) {
back = 1;
log('Back Hover');
}
});
答案 1 :(得分:3)
这是可能的。您无法获取位于另一个元素下方的元素的一部分的mouseenter | mouseover事件,但是如果您知道元素的尺寸和位置,则可以侦听mousemove事件并在鼠标进入某个特定区域时获取。
我创建了两个div,就像你的一样:
<div id="aboveDiv" style="position:absolute;top:30px;left:30px;width:100px;height:100px;background-color:red;z-index:2;"></div>
<div id="belowDiv" style="position:absolute;top:80px;left:80px;width:100px;height:100px;background-color:green;z-index:1;"></div>
我想知道什么时候鼠标进入下面div所占据的区域,为此我编写了这个脚本:
$(function (){
var divOffset = {
top: $("#belowDiv").position().top,
left: $("#belowDiv").position().left,
right: $("#belowDiv").position().left + $("#belowDiv").width(),
bottom: $("#belowDiv").position().top + $("#belowDiv").height(),
isOver: false
}
$(window).mousemove(function (event){
if (event.pageX >= divOffset.left && event.pageX <= divOffset.right && event.pageY >= divOffset.top && event.pageY <= divOffset.bottom){
if (!divOffset.isOver){
divOffset.isOver = true;
/* handler the event */
alert("gotcha");
}
}else{
if (divOffset.isOver){
divOffset.isOver = false;
}
}
});
});
监听鼠标移动并不简单,但工作正常。
此处指向fiddle
的链接