0

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

关键思想是选择是由一个包含两个(在我的例子中)

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

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

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

    提前致谢!

  • 4

    2 回答 2

    3

    mouseover并且mouseout在这种情况下是错误的事件之王。当您在具有 mouseout 事件的元素中还有其他元素时,它们会经常被触发。你需要像mouseleavemouseenter

    jQuery中的鼠标离开

    于 2011-02-03T12:13:17.817 回答
    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)

    于 2011-02-03T12:27:54.160 回答