次の jQuery コードは、さまざまなフォーム テキスト ボックス ( input type='text' title='tooltip text'
) 要素にツールチップを表示するために使用されています。特定のシナリオを除いて、IE(7-9)でのみ機能します。
function toolTip() {
var xOffset = 10;
var yOffset = 20;
$(".tooltip")
.each(function () {
this.tooltipText = this.title;
$(this).removeAttr("title");
})
.mouseenter(function (e) {
$("body").append("<p id='tooltip'>" + this.tooltipText + "</p>");
$("#tooltip")
.css("top", (e.pageY - xOffset) + "px")
.css("left", (e.pageX + yOffset) + "px")
.fadeIn("fast");
})
.mouseleave(function () {
$("#tooltip").remove();
})
.mousemove(function (e) {
$("#tooltip")
.css("top", (e.pageY - xOffset) + "px")
.css("left", (e.pageX + yOffset) + "px");
});
}
そのシナリオは次のとおりです。
- テキストボックスでのマウスダウン
- マウスをテキスト ボックスの外に移動すると、ツールチップが引き続き表示されます
- マウス ボタンを離す マウス ボタンを離した後もツールチップが表示されたままになります
この問題は、マウス ボタンが離されたときのfinalとは別に、マウスが他の要素の上に移動したときに発生するさまざまなマウス イベントによって引き起こされmouseleave
ます。http://jsfiddle.net/richev/VXUS9/8/で動作するデモを参照してください。ここで何が起こっているかについて何か考えはありますか?
アップデート
この問題は、IE のBassistance jQuery ツールチップにも存在します。