0

Google Maps OverlayView の一部である 2 つの内部 div を持つ親 div があります。

<div id="container">
    <div id="inner1">inner 1</div>
    <div id="inner2">inner2</div>
</div>

mouseoutユーザーがマウスを の境界の外に移動した場合にのみ、イベントを発生させたいと考えています#container。現時点では、次のコードがあります。

    google.maps.event.addDomListener(this.$content.get(0), "mouseout", function (e) {
      console.log('InfoWindow mouseleave', $(e.fromElement));
    }); 

ただし、ユーザーがマウスを移動するたびに起動し#inner1ます。実際、 を見るとe.fromElement、ユーザーがマウスをコンテナ内に移動するたびに発火しているように見えます! 私に何ができる?

jQuery での正しい答えは、mouseleave イベントを使用することのようですが、Google マップではそれにアクセスできないようです。少なくとも、mouseout を mouseleave に変更すると、イベントはまったく発生しなくなります。

この jsFiddle は基本的な問題を示しています: http://jsfiddle.net/pvB4u/1/

4

1 に答える 1

0

うまくいかない場合は、別の方法を試すことができます。マウスポインターのpageXとpageYを取得します(document.ready()で初期化する必要があります。次に、それが最も外側のコンテナの境界内にあるかどうかを確認します。
このようなもの

$(document).mousemove(function (e) {                        

                            if ($("#container").offset().left > e.pageX || (parseInt($("#container").offset().left) + $("#container").width()) < e.pageX
                        || $("#container").offset().top > e.pageY || (parseInt($("#container").offset().top) + $("#container).height()) < e.pageY) {
                                // This will be your required mouseout event
                            }

                    });
于 2013-04-12T11:57:01.537 に答える