如果你移动到a标签也算移出div...

解决方案 »

  1.   

    <script type="text/javascript">
    var Class = {
    //创建类
    create: function () {
    return function () {
    this.initialize.apply(this, arguments);
    };
    }
    };var $A = function (a) {
    //转换数组
    return a ? Array.apply(null, a) : new Array;
    };var $ = function (id) {
    //获取对象
    return document.getElementById(id);
    };Object.extend = function (a, b) {
    //追加方法
    for (var i in b) a[i] = b[i];
    return a;
    };Object.extend(Object, { addEvent : function (a, b, c, d) {
    //添加函数
    if (a.attachEvent) a.attachEvent(b[0], c);
    else a.addEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
    return c;
    },

    delEvent : function (a, b, c, d) {
    if (a.detachEvent) a.detachEvent(b[0], c);
    else a.removeEventListener(b[1] || b[0].replace(/^on/, ""), c, d || false);
    return c;
    },

    reEvent : function () {
    //获取Event
    return window.event ? window.event : (function (o) {
    do {
    o = o.caller;
    } while (o && !/^\[object[ A-Za-z]*Event\]$/.test(o.arguments[0]));
    return o.arguments[0];
    })(this.reEvent);
    }

    });Function.prototype.bind = function () {
    //绑定事件
    var wc = this, a = $A(arguments), o = a.shift();
    return function () {
    wc.apply(o, a.concat($A(arguments)));
    };
    };var out = {

    d_m : null,

    reMouse : function (a) {
    var e = Object.reEvent();
    return a ? document.body.scrollLeft + e.clientX : document.body.scrollTop + e.clientY;
    },

    set : function (o) {
    var wc = this;
    if (!wc.d_m)
    wc.d_m = Object.addEvent(document, ["onmousemove"], wc.over.bind(wc, o));
    },

    over : function (o) {
    var wc = this, mouse_x = wc.reMouse(1), mouse_y = wc.reMouse(0),
    left = o.offsetLeft, top = o.offsetTop, right = left + o.offsetWidth, bottom = top + o.offsetHeight;
    if (left > mouse_x || right < mouse_x || top > mouse_y || bottom < mouse_y) {
    alert("onmouseout触发的说");
    Object.delEvent(document, ["onmousemove"], wc.d_m);
    wc.d_m = null;
    }
    }

    };
    </script>
    <div class="submenu" id="menu1" style="border:1px solid red;width:100px;height:100px;"
          onmouseover="out.set(this)">
            <a href="#">HTML Tutorials</a>
            <a href="#">DHTML Tutorials</a>
            <a href="#">JavaScript Tutorials</a>
            <a href="#">CSS Tutorials</a>
     </div>自己写个onmouseout方法
      

  2.   

    @muxrwc(生命曾可贵,信念价更高,学习要努力,追猫永不弃。) 
    你的东西我得研究研究问题是每次离开a标签时,怎么也触发div的onmouseout呢
      

  3.   

    离开a时候不可能触发吧?
    IE 和 FF 都测试过了啊。。FF下那个CSS有点问题的说。。高度应该设置aotu
    如果设置具体值的话应该设置overflow
      

  4.   

    问题是每次离开a标签时,怎么也触发div的onmouseout呢=========================================================我也碰到这样的问题,似乎在windows的FF里面 就 没问题,在linux的ff里面就有问题。
      

  5.   

    好像是子元素继承了父元素的方法 还真没遇到过
    function mclose2()
    {
    if (window.event.srcElement.tagName.toLowerCase()=="a")
    {return;
    }
    alert("1111");
    }
    这样可以了
      

  6.   

    <style>
    p {border:1px solid #FF9933; background-color:#CCC; z-index:999;}
    </style>
    <script>
    function mclose2()
    {
    if (window.event.srcElement.parentNode.id=="menu1")
    {return;
    }
    alert("1111");
    }
    </script>
    <div class="submenu" id="menu1" style="border:1px solid red;height:100px;"
    onmouseover=""
    onclick="mclose2();">
    <p id="a" onclick="alert(this.offsetWidth);">HTML Tutorials</p>
    <p>DHTML Tutorials</p>
    <p>JavaScript Tutorials</p>
    <p>CSS Tutorials</p>
    </div>
    超出文本宽度的地方还是有问题 等待高手解惑