gpt4 book ai didi

jQuery .text() 太慢(可以回调吗?)

转载 作者:行者123 更新时间:2023-12-01 06:06:20 25 4
gpt4 key购买 nike

我为 jQuery 编写了一个工具提示插件,每当用户将鼠标悬停在元素上时,它就会显示带有指定文本的工具提示。默认情况下,提示显示在光标的右上角,但如果工具提示太宽而无法适应页面,则会显示在左上角。我遇到的问题是,使用 .text() 后,我需要检查工具提示的新宽度以查看它是否比窗口宽度更宽,但似乎存在延迟,使得新宽度不直到我调用 .width() 后才设置。因此,例如,工具提示以空 div 开始,即使我在 .width() 之前调用 .text(),当我调用 .width() 时,div 的宽度仍为 0。这是我一直在使用的代码:

$.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() 吗?或者我的代码中是否还有其他我遗漏的缺陷?

谢谢

最佳答案

而不是 .text(tText).positionAtCursor(e) 尝试:

.html(
function(index,oldhtml){
$(this).html(tText);
if($(this).html()!==oldhtml){ $(this).positionAtCursor(e); }
});
)

可能是一个相当粗糙的方法,但也许会起作用。

我想你也可以

while($(this).html()==oldhtml){ $(this).html(tText); }
$(this).positionAtCursor(e);

关于jQuery .text() 太慢(可以回调吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com