- 主题:mouseout/in和嵌套的div。。。 (转载)
只要判断onmouseout的时候鼠标指针是不是还在div内部就是了。
如果div是relative的,可以用
function fGetXY(aTag)
{
//alert(aTag.parentNode);
var oTmp = aTag;
var pt = new Point(0,0);
do
{
pt.x += oTmp.offsetLeft;
pt.y += oTmp.offsetTop;
oTmp = oTmp.parentNode;
} while(oTmp.tagName!="BODY");
return pt;
}
//存放x,y坐标
function Point(iX, iY)
{
this.x = iX;
this.y = iY;
}
来获得这个div左上角的绝对坐标。然后再求出其余三个点的绝对坐标。让event对象的x,y跟这四个坐标比一比看出去没有,就知道了。
【 在 KDr2 (Killy Draw) 的大作中提到: 】
: 发信人: KDr2 (Killy Draw), 信区: WebDev
: 标 题: mouseout/in和嵌套的div。。。
: 发信站: 水木社区 (Fri Jun 15 14:18:55 2007), 站内
: ...................
--
FROM 207.46.92.*
function fGetXY(aTag)
{
//alert(aTag.parentNode);
var oTmp = aTag;
var pt = new Point(0,0);
do
{
pt.x += oTmp.offsetLeft;
pt.y += oTmp.offsetTop;
oTmp = oTmp.parentNode;
~~~~~~~~~~~~~~~~~~~~~~//一直不停往parent遍历,累加值
} while(oTmp.tagName!="BODY");//这里好像有点问题,还要加判断条件oTmp.style.position!="absolute"
return pt;
}
【 在 sayinger (言者) 的大作中提到: 】
: 这个效率太低了吧,而且div不是relative的咋办,在resize上再挂一个?
--
FROM 207.46.92.*
里面的子div多了就麻烦了
【 在 roy (大饼:己所不欲,勿施于人) 的大作中提到: 】
: 这种需要bubble处理
--
FROM 207.46.92.*
呵呵,重算就是了,只要层数不深没啥效率问题。
【 在 sayinger (言者) 的大作中提到: 】
: 如果窗体发生变化,岂不是要重算,不会每次mouseout的时候都重算吧,那效率实在是。。。
: 其实针对楼主的需求只要在d1的mouseover里加上让d1不隐藏就行了
--
修改:hawkgao FROM 207.46.92.*
FROM 207.46.92.*