2
<a href="/somewhere" onmouseout="someFunction()">blah blah blah<img src="blah.jpg"></a>

上記のリンクではsomeFunction()、マウスがリンクを離れたときに発火します。簡単そうです。しかし、画像「blah.jpg」にカーソルを合わせると、onmouseoutイベントも発生します。'blah.jpg'は実際にはaノードにあるため、これは望ましくありません。aノード内にdivがある場合、またはストレートテキスト以外の他のhtml要素がある場合も同じことが起こります。javascriptはこれをノードと見なしaます。これらのイベントが不適切に発生するのを防ぐ方法はありますか?説明されている動作は、win7ではchromeとffです。

*更新:jqueryソリューションがある場合は、教えてください

4

2 に答える 2

2

これは、ノード タイプを確認することで実行できます。試す

onmouseout="if ((event.relatedTarget || event.toElement) == this.parentNode) someFunction()"
于 2012-04-21T20:43:08.767 に答える
0

コンセプトはシェザドに似ているので、私は彼に投票しました。クロスブラウザで動作するはずです。HTMLで:

onmouseout='out(this)'

jsで(jqueryファイルが含まれています):

out(thisRef) {
   var newHover = event.relatedTarget || event.toElement;
   if(!jQuery.contains(thisRef,newHover) && !(thisRef==newHover)) {
        someFunction();
   }

}

于 2012-04-23T01:18:02.220 に答える