2016-09-14 5 views
0

私にはイメージがあります。 onclickリスナーとonmouseoutリスナーを添付しました。 onclickリスナーは、parent.removeChild(this)操作を行います。 画像が消えます。マウスを動かすまで何も起こりません。その後、onmouseoutハンドラを起動します。 それは可能ですか? どうやって、親要素のonmouseoutに何も付いていないので、伝播ではないと仮定します。onMouseOutイベントは、JavaScriptが現在マウスオーバーしている要素を削除すると発生しますか?

ハンドラ:

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; 
} 

それはより大きなコードの一部です。これまで私が行ってきたことは、小さなファイルを分割するために特定の問題を抽出したことです。まるでマウスアウトイベントが引き起こされたかのように見えます。

+0

コードを追加して、これまで行ってきたことを – Abhijeet

+0

実際にコードを言葉で説明するのではなく、実際に表示しないのはなぜですか?どのブラウザでそれが起こりますか? – epascarello

+0

私はSafariでそれをテストしました – George

答えて

1

OK。いくつかのテストの後、私はそう言うことができます - マウスポインタの下からDOMオブジェクトを削除すると、onmouseoutイベントがトリガされます。動きが相対的であり、マウスポインタがオブジェクト上にあり、現在は外にあることが重要なため、あなたは非常に論理的だと思うのです。 :)

だから、オブジェクトを削除する前に、イベントリスナを削除する必要がありました。

関連する問題