我的javascript自定义选择onmouseout的问题

时间:2011-02-03 12:08:03

标签: javascript select html-lists onmouseout

我已使用javascript创建了自定义选择,如下所述:http://v2.easy-designs.net/articles/replaceSelect/

关键的想法是选择是由一个包含两个(在我的情况下)

  • 的。我想要做的是添加一个onmouseover函数,该函数应该是:

    ulNode.onmouseout = function() {
          if (ulNode.className.indexOf('selectOpen') !- -1){
             selectMe(li[0]);
          }
    }
    

    即。如果鼠标离开ul,并且ul打开,则应选择第一个元素。这很好,但是当我在li之间移动鼠标时会调用此函数,即使我没有离开包含ul。有什么想法可能会发生吗?

    提前致谢!

  • 2 个答案:

    答案 0 :(得分:3)

    对于此案例,

    mouseovermouseout是错误的事件之王。当您在具有mouseout事件的元素中包含其他元素时,它们经常被触发。您需要mouseleavemouseenter

    之类的内容

    Mouseleave in jQuery

    答案 1 :(得分:1)

    尝试在mouseout事件之前实现一些延迟,如下所示:

    var hover_to = null;
    $("ul").mouseover(function() {
       window.clearTimeout(hover_to);
       // (A) your stuff...
    }).mouseout(function() {
       hover_to = window.setTimeout(function() {
          // (B) your stuff...
       },200);
    });
    

    这有望处理不需要的原子事件。 请注意(B)中的范围。