自分で小さなツールチップを作成しましたが、速すぎると問題が発生するようです。
これは単純なツールチップです。つまり、mouseenterを実行すると、テキストが上にフェードインするバブルが表示され、バブルをfadeOutにマウスアウトします。
この問題は、いくつかの異なる要素で非常に高速なmouseenter / mouseleaveを実行すると発生します...最初は、0.6のようにフェードし始め、最終的には表示されません。
キューイングと関係があると思います。そこで、stop()とclearqueue()を試しましたが、それでも機能しません。
プラグインは次のとおりです。
(function ($) {
$.fn.tooltip = function (options) {
var selector = $(this).selector;
var defaults = {
fadeInSpeed:350,
fadeOutSpeed:200,
delayIn: 350,
delayOut: 300,
popupId:'tooltip_popup',
verticalOffset: 30
};
var settings = $.extend({}, defaults, options);
$(document).delegate(selector, 'mouseenter', function (e) {
var $this = $(this);
var title = $this.attr('title');
$this.attr('title', '');
if (title !== '') {
if ($('#' + settings.popupId).text() === '') {
$('<div />').attr('id', settings.popupId)
.appendTo('body')
.css({
position:'absolute',
backgroudColor: 'black',
zIndex: 5
})
.addClass('tooltip_style')
.hide();
$('<div />').appendTo('#' + settings.popupId).addClass('tooltip_arrow');
$('<span />').appendTo('#' + settings.popupId);
} else {
$('#' + settings.popupId).hide().stop().clearQueue().hide();
}
var ele_x = $this.offset().left;
var ele_y = $this.offset().top;
$('#' + settings.popupId+' span').text(title);
$('#' + settings.popupId)
.css({
top : ele_y - settings.verticalOffset,
left: ele_x
})
.delay(settings.delayIn)
.fadeIn(settings.fadeInSpeed);
}
});
$(document).delegate(selector, 'mouseleave', function (e) {
var $this = $(this);
$('#' + settings.popupId)
.delay(settings.delayOut)
.fadeOut(settings.fadeOutSpeed);
$this.attr('title', $('#' + settings.popupId+' span').text() );
});
return this;
}
})(jQuery);
お気づきかもしれませんが、この行は修正が必要な行だと思います。
$('#' + settings.popupId).hide().stop().clearQueue().hide();
(私がすべてを試していたので、それは少し厄介です... ha)。
私はこの待ち行列のことを完全には理解していないと思います。
ここにフィドルがあります:http://jsfiddle.net/denislexic/7YMcu/2/
助けてくれてありがとう。