我已经为jQuery编写了一个工具提示插件,当用户将鼠标悬停在元素上时,它会显示带有指定文本的工具提示。默认情况下,提示会显示在光标的右上角,但如果工具提示太宽而无法放在页面上,则会显示在左上角。我遇到的问题是,在使用.text()之后,我需要检查工具提示的新宽度,看它是否比窗口宽度宽,但似乎有延迟,使得新宽度isn在我已经调用.width()之后才设置。因此,例如,工具提示以空格开始,即使我在.width()之前调用.text(),但在我调用.width()时,div仍处于宽度0.下面是代码我一直在使用:jQuery .text()速度太慢(回调可能?)
$.fn.tooltip = function(tText) {
this.each(function() {
$(this).unbind('.tipE').bind('mouseenter.tipE', function(e) {
$('#toolTip')
.hide()
.stop(true, true)
.text(tText)
.positionAtCursor(e)
.fadeIn('fast');
}).bind('mouseleave.tipE', function() {
$('#toolTip').fadeOut('fast');
}).bind('mousemove.tipE', function(e) {
$('#toolTip').positionAtCursor(e);
});
});
};
$.fn.positionAtCursor = function(e) {
return this.each(function() {
var top = e.pageY - 25;
var left = e.pageX + 10;
var rightBound = $(window).width();
if (rightBound && (e.pageX + $(this).width() > rightBound)) {
left = e.pageX - $(this).width() - 20;
}
$(this).css({ 'top' : top, 'left' : left });
});
};
有什么办法,我可以有针对的.text(回调),这样我可以等待调用positionAtCursor()?或者我的代码中还存在其他一些缺失的缺陷?
感谢
啊好的工作:) – Calum 2011-04-07 18:34:41