JQuery偏移问题

JQuery偏移问题,jquery,position,positioning,offset,Jquery,Position,Positioning,Offset,我有一个ajax脚本,可以在页面上加载列表项。根据用户单击的选项卡,将打开不同的列表。列表项是唯一的。但是我的if子句计算出我在哪个列表中,然后计算弹出窗口的偏移量 if(varType == 'search') { p = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_search').offset();

我有一个ajax脚本,可以在页面上加载列表项。根据用户单击的选项卡,将打开不同的列表。列表项是唯一的。但是我的if子句计算出我在哪个列表中,然后计算弹出窗口的偏移量

            if(varType == 'search')
            {
                p = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_search').offset();
                //p.top = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_search').offset().top - $(window).scrollTop();
                //p.left = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_search').offset().left(); 

            }
            else if(varType == 'fuv')
            {
                p = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_fuv').offset();
            }
如果偏移量是0,0:

    while(p.top == 0 || p.left == 0)
    {
        if(varType == 'search')
        {
            p = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_search').offset();
        }
        else if(varType == 'fuv')
        {
            p = $('.dv_variable_' + subjectId + '_' + varNumber + '_' + varSequence + '_fuv').offset();
        }
 }

现在,如果我在上面的ifs和while循环之间执行alertp.left++p.top,则会计算偏移量,否则如果没有该警报,我总是得到0,0。

这很可能是一个海森堡,也发布在这里:

在您设置DOM或执行某些显示/隐藏操作(可能未显示)后,DOM可能没有时间进行更新?。警报通过引入一个小延迟来解决此问题,该延迟足以让DOM更新