3

私はこのような構造を持っています:

<div id="container">

<span>
   <span></span>
</span>

<span>
   <span></span>
</span>

</div>

コンテナーの mouseout イベントをキャッチする必要があるため、jquery に次のようにさせました。

$("#container").hover('',function(){ 
alert("Out"); 
});

Firefox/Opera では、div を離れるときにのみ mouseout-function を起動します (私が望む方法)。

IE では、マウスがヒットした div 内のすべての *-Tag で mouseout 関数を起動します。(*おそらく重要なのは、span タグにも mouseover および out イベントがあることです)

誰でもこれを解決する方法を知っていますか? (複雑なレイアウトのため入れ子構造の変更はできません)

thx4任意のアイデア!

4

7 に答える 7

5

@evelio: うまくいきませんでした。ID は常に「コンテナ」でした。

私はそれをどのように解決しましたか(これまでのところ...):

信じられないかもしれませんが、container-div の属性 background-color に色を設定する必要がありました。私はまだこの事実にかなりショックを受けていますが、私はそれを数回試しましたが、css の background-color 属性だけが機能するかどうかを判断します。

および: 色 #000000 は機能しません。「白」を含む他の色は機能します。

于 2009-10-07T22:12:30.857 に答える
1

これを試して

$("#container").mouseleave(function(){ 
alert("Out"); 
});

IEに関しては、くだらないブラウザをボイコットし、指が麻痺するまで、そのまったくの絶望についてブログを書いてください. このブラウザーのせいで、Web デザイナーの時間は本来よりも約 33% 少なくなります。できる方法で殺してください。

于 2011-03-21T08:14:27.097 に答える
1
 $("#container").hover('',function(ev){

      alert("Out");
      if( ev.stopPropagation ) { ev.stopPropagation(); } //For 'Good' browsers
      else { ev.cancelBubble = true; } //For IE

 });

また読む:イベントのバブリングとキャプチャ

于 2009-10-14T15:38:04.087 に答える
1

それを解決する方法は、背景として 1px の透明な png を追加することです。

参照: IE8: Div ホバーは、背景色が設定されている場合にのみ機能します。非常に奇妙です。なぜですか?

于 2012-03-12T16:34:17.793 に答える
0

やってみました:

$("#container").hover('',function(){ 
    alert("Out"); 
    return false;
});

また:

$("#container").hover('',function(e){ 
    if($(e.target).is("#container")){
        alert("Out"); 
        return false;
    }
});

またはさらに良い:

$("#container").mouseout(function(e){ 
    if($(e.target).is("#container")){
        alert("Out"); 
        return false;
    }
});

マウスアウトだけが必要な場合は、ホバー機能を使用する理由はありません。

于 2009-10-08T00:56:26.680 に答える
0

IE 6、7、および 8 で同様の問題がありました。Mafka は正しいです。動作させるには背景色を設定する必要があります。「コンテナ」に背景色を設定できない場合でも、背景色を白に設定し、不透明度を 0 に設定できます。

jQuery でマウスオーバー イベントをバインドする前に、次の JavaScript コードでこれを行いました。

if ($.browser.msie) {
    $("#container").css({
        background: '#fff',
        opacity: 0
    });
}
于 2010-05-21T10:46:15.850 に答える
0

うーん、私はIEを近くに持っていませんが、うまく動作する場合はjQueryのマウスアウトデモ(およびホバーデモ)を試すことができますが、他の行のコードに問題があるようです...最終的には次のように回避できます:

$("#container").hover('',function()
{
    //Are you sure?
    if($(this).attr('id') == 'container')
    {
        alert('yup this is container');
    }
});
于 2009-10-07T21:26:08.857 に答える