Javascript 爆米花出现在错误的地方
JS在这里拉小提琴: 我正在制作一个popover,并让它工作,但当我开始通过ajax加载内容并添加一个微调器以首先显示时,它现在出现在错误的位置 我认为问题在于微调器使一个小的弹出框出现,当内容加载时,它使用相同的div添加ajax内容,然后在移动它之前调整框的大小 现在有时候它可以工作了,在我的网站上,它第一次似乎不起作用,但当再次关闭和打开它时,它会弹回到正确的位置 有人能看出这里出了什么问题吗 我正在使用此功能重置位置:Javascript 爆米花出现在错误的地方,javascript,jquery,popover,Javascript,Jquery,Popover,JS在这里拉小提琴: 我正在制作一个popover,并让它工作,但当我开始通过ajax加载内容并添加一个微调器以首先显示时,它现在出现在错误的位置 我认为问题在于微调器使一个小的弹出框出现,当内容加载时,它使用相同的div添加ajax内容,然后在移动它之前调整框的大小 现在有时候它可以工作了,在我的网站上,它第一次似乎不起作用,但当再次关闭和打开它时,它会弹回到正确的位置 有人能看出这里出了什么问题吗 我正在使用此功能重置位置: function reset_popover_position(u
function reset_popover_position(user_id) {
var position = $('#link_' + user_id).position();
console.log(position);
var top_position = (position.top - $('.new_tooltip').outerHeight()) - 10;
console.log(top_position);
var left_position = (position.left - ($('.new_tooltip').outerWidth() / 2) + ($('#link_' + user_id).outerWidth() / 2));
console.log(left_position);
$('.new_tooltip').css({
top: top_position + "px",
left: left_position + "px"
});
return true;
}
setTimeout
修复了该问题
这是我在处理动态内容高度和宽度时使用的技巧
我认为setTimeout
的1
为浏览器提供了足够的时间来呈现html&因此,当setTimeout
触发实际的代码时,计算维度,一切都会给出正确的结果
我在toggle\u popover
中添加了setTimeout
setTimeout(function() {
reset_popover_position(user_id);
}, 1);
setTimeout
修复了该问题
这是我在处理动态内容高度和宽度时使用的技巧
我认为setTimeout
的1
为浏览器提供了足够的时间来呈现html&因此,当setTimeout
触发实际的代码时,计算维度,一切都会给出正确的结果
我在toggle\u popover
中添加了setTimeout
setTimeout(function() {
reset_popover_position(user_id);
}, 1);
真管用!但在我的网站上,它通过ajax加载,似乎出现在错误的位置1毫秒,然后又恢复到正确的位置,你知道如何修复吗?我也通过使用toggle()修复了它,我隐藏了它,添加了html,重置了位置,然后再次切换:)谢谢你的帮助!真管用!但在我的网站上,它通过ajax加载,似乎出现在错误的位置1毫秒,然后又恢复到正确的位置,你知道如何修复吗?我也通过使用toggle()修复了它,我隐藏了它,添加了html,重置了位置,然后再次切换:)谢谢你的帮助!