IE8は

2010-12-14 9 views
1

オーケー選択ボックスのオプションのホバーに壊すので、私はIE以外のすべてのブラウザでは正常に動作し、次のコードを持っている...今IE8は

$('input[title!=], select[title!=]').mouseenter(function(){ 
    if ($(this).data('focused')!='y') { 
     $(this).data('t', this.title).data('focused', 'y'); 
     this.title = ''; 
     var pos = $(this).position(); 
     $('body').append('<div id="toolTip" class="round-5 shadow-heavy"><img class="arrow" src="/images/bg/toolTip.png" alt="" />'+($(this).data('t'))+'</div>'); 
     $('#toolTip').css('top',(pos.top+($(this).height()/2)-($('#toolTip').innerHeight()/2))+'px').css('left',(pos.left+($(this).innerWidth())+20)+'px'); 
    } 
}).mouseleave(function(){ 
    if ($(this).data('focused')!='n') { 
     $(this).data('focused', 'n'); 
     this.title = $(this).data('t'); 
     $('#toolTip').remove(); 
    } 
}).focus(function(){if($(this).data('focused')!='y'){$(this).trigger('mouseenter');}}).blur(function(){if($(this).data('focused')!='n'){$(this).trigger('mouseleave');}}); 

、IEであなたが選択ボックスを開き、マウスを移動した場合ボックスが閉じるオプションの1つを選択します。何が原因でIEは明らかにselect要素の一部としてオプションのドロップダウンボックスを数えないので、mouseleaveイベントをトリガーします。

誰でもこの問題を解決する方法はありますか?

答えて

2

特にIEはまた、古いバージョンで何でもの上に座っている理由であるIE6(おそらくそれ以前)それはリサイズから引き込まれた...以来、<select>非常に奇妙な実装を持っています。

残念ながら、<option>要素のイベントは、(あなたが見ているように)最高で信頼性が低く、IEでは信頼できません。あなたはIEの動作を無効にすることができますが、それはそこにある唯一の "修正"です。

<select>を完全に置き換える代わりに、これを行ういくつかのjQueryプラグインがあります(check out this question for options around that)。