0

JS 小提琴在这里:http: //jsfiddle.net/Xw9QK/1/

我正在制作一个弹出框,并让它工作,但是当我开始通过 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;
}
4

1 回答 1

4

AsetTimeout解决了这个问题。小提琴

这是我在处理动态内容高度和宽度时使用的一个技巧。

我认为它setTimeout1了浏览器足够的时间来呈现 html & 所以,当setTimeout触发计算尺寸的实际代码时,一切都会给出正确的结果。

setTimeout在里面加了toggle_popover

setTimeout(function() {
  reset_popover_position(user_id);
}, 1);
于 2013-07-02T10:54:51.270 回答