我已經爲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