セットアップ
フォーム要素内の (.fieldset) 要素に関連付けられたmouseenter
イベントを介して表示される jQuery UI ツールチップがあります。<div class="fieldset">
マウスが div を離れると、ツールチップが消えるはずです。
問題
.fieldset
IE8 (IE8 のみ) では、要素の領域にカーソルを合わせると、ツールヒントがすぐに消えます。IE8 は、子要素が実際には親要素の子孫ではないかのように、またはツールヒントがmouseover
andmouseout
イベントを使用しているかのように動作します。ただし、このツールチップにはmouseenter
およびmouseleave
イベントを使用しています。
.fieldset
要素に無地の背景を与えてみました。透過画像も作ってみました。子要素をチェックして、z-index
違いがないことを確認しました。私がしていることは何もうまくいかないようです。
マウスが.fieldset
要素とその子の上に置かれている間、ツールチップを表示したままにする必要があります。
コード
HTML:
<form class="form centerBH" id="form" style="display: block; zoom: 1;">
<div class="fieldset">
<h2 class="legend">Autogenerated Image Links</h2>
<div id="image" class="panebox" >
<div class="ui-widget">
<ul>
</ul>
</div>
</div>
</div>
</form>
CSS:
.form {
width: 50em;
/* correct margin collapse in IE */
overflow: auto;
}
/* ensure all form elements will fade in and out */
form * {
filter: inherit;
}
.panebox {
background-color: #F7F7F7;
border-color: #B7B9BD;
border-radius: 10px;
border-style: solid;
border-width: 1px;
box-shadow: 0px 1px 0px 0px rgba(255,255,255,.7), 0px 1px 2px 0px rgba(0,0,0,.1);
margin: 7px;
padding: 14px;
position: relative;
overflow: hidden;
}
JavaScript:
ここでも、jQuery UI ツールチップを使用しています。これは、タイトル属性が定義されているすべての要素に自動的にバインドされます。mouseenter
ただし、ツールチップを表示および非表示にするために、およびmouseleave
イベントをdiv に明示的にアタッチしようとしまし.fieldset
たが、それでも同じ動作が得られます。
ツールチップを設定する方法は次のとおりです。
this.fieldsetTooltip=this.$(".fieldset").tooltip({
content: 'Click an image link to open that image.',
disabled: true,
items: ".fieldset",
position: {
my:"left+20 top+25",
at:"right top",
collision: "none",
using: function( position, feedback ) {
//console.log(feedback.target.width);
$( this ).css( position );
$( "<div>" )
.addClass( "arrow" )
.addClass( feedback.vertical )
.addClass( feedback.horizontal )
.appendTo( this );
}
}
});
ツールチップを手動で開いたり閉じたりする方法は次のとおりです。
this.$el.on("mouseenter",'.fieldset',function(e){
console.log("Mouse entering .fieldset");
_this.fieldsetTooltip.tooltip("open");
});
this.$el.on("mouseleave",'.fieldset',function(e){
console.log("Mouse leaving .fieldset");
_this.fieldsetTooltip.tooltip("close");
});
また、ウィンドウ オブジェクトがそのサイズ変更イベントをトリガーするときに、カスタムのサイズ変更イベントをトリガーします。
// close tooltip when user resizes the window
this.listenTo(AppReg.events,"context:resized",function() {
_this.fieldsetTooltip.tooltip("close");
});
更新
上記のイベントのコンソール ログに基づいて、mouseenter
およびmouseleave
イベントが正常に起動しています。ただし、jQuery UI ツールチップが別のイベントを要素 (おそらく「マウスアウト」?) にバインドしているため、自動的に閉じていると思います。
これを止める方法を知っている人はいますか?