当我在javascript中删除鼠标当前结束的元素时,是否会发生onMouseOut事件?

时间:2016-09-14 12:45:45

标签: javascript events

我有一张图片。 我附加了onclick监听器和onmouseout监听器。 onclick listener做parent.removeChild(this)操作。 图像消失了。直到我移动鼠标才会发生任何事情。然后触发onmouseout处理程序。 它甚至可能吗? 而且,我假设不是通过传播,因为在父元素上没有附加到onmouseout上。

处理程序:

    function ballMouseoutHandler(e) {
       event.stopPropagation();
       this.src = ballSrc;
       alert('mouse out!');
    }

   function ballMouseoverHandler() {
      this.src = ballInvSrc;
   }

   function ballClickHandler() {
     gameBalls.removeChild(this);
   }

代码添加图片:

gameBalls = document.getElementById('balls-col');
var tmpBall = createBall();
gameBalls.appendChild(tmpBall);
tmpBall.addEventListener('click', ballClickHandler);
tmpBall.addEventListener('mouseover', ballMouseoverHandler);
tmpBall.addEventListener('mouseout', function(e) {ballMouseoutHandler(e);});

function createBall() {
   var ball = new Image();
   ball.src = ballSrc;
   ball.classList.add('ball');
   return ball;
}

它是更大代码的一部分。所以到目前为止我所做的是我提取特定问题以分离较小的文件。它看起来似乎已经触发了鼠标输出事件。

1 个答案:

答案 0 :(得分:1)

行。经过一些测试后,我可以说是 - 从鼠标指针下删除DOM对象会触发onmouseout事件。如果你认为这是相当逻辑的,因为移动是相对的,重要的是鼠标指针在对象上,现在它已经出局了。 :)

所以我要做的就是在删除对象之前删除事件监听器