Javascript 爆米花出现在错误的地方

Javascript 爆米花出现在错误的地方,javascript,jquery,popover,Javascript,Jquery,Popover,JS在这里拉小提琴: 我正在制作一个popover,并让它工作,但当我开始通过ajax加载内容并添加一个微调器以首先显示时,它现在出现在错误的位置 我认为问题在于微调器使一个小的弹出框出现,当内容加载时,它使用相同的div添加ajax内容,然后在移动它之前调整框的大小 现在有时候它可以工作了,在我的网站上,它第一次似乎不起作用,但当再次关闭和打开它时,它会弹回到正确的位置 有人能看出这里出了什么问题吗 我正在使用此功能重置位置: function reset_popover_position(u

JS在这里拉小提琴:

我正在制作一个popover,并让它工作,但当我开始通过ajax加载内容并添加一个微调器以首先显示时,它现在出现在错误的位置

我认为问题在于微调器使一个小的弹出框出现,当内容加载时,它使用相同的div添加ajax内容,然后在移动它之前调整框的大小

现在有时候它可以工作了,在我的网站上,它第一次似乎不起作用,但当再次关闭和打开它时,它会弹回到正确的位置

有人能看出这里出了什么问题吗

我正在使用此功能重置位置:

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,重置了位置,然后再次切换:)谢谢你的帮助!