爱米*阅

不是日志,不是剪切板

mouseover & mouseout - [技术 | Tech]

发布时间   2011-02-17 @ 17:11:00 标签    javascript mouse event 编辑 | 分享 0

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://www.blogbus.com/amixyue-logs/105640579.html

IE has mouseenter & mouseleave , so IE works well.

How about FF and so on ?

mouseout triggered when moving across border between element itself and its child element and outside .

mouseover triggered when inside and its child element .

so function

function contain(parentNode, node) { 

var _flag = parentNode.compareDocumentPosition(node); 

return (_flag == 20 || _flag == 0)? true : false; 

}

mouseover : !contain(this , event.relatedTarget)

mouseout : !contain(this , event.relatedTarget)

compareDocumentPosition 是用来判断节点关系。

五位的二进制的‘1’ 所在位置:

第五位:祖先 //20

第四位:后代 //10

第三位:前面 //4

第二位:后面 //2

第一位:本身 //0

这样对应五种情况,值分别是:10100(20), 01010(10), 00100(4), 00010(2), 00000(0) 。

&16 就可以很好的解决包含关系。

分享到: