【问题标题】:JQuery Offset ProblemsJQuery 偏移问题
【发布时间】:2011-06-02 22:52:31
【问题描述】:

我有一个 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 循环之间执行 alert(p.left+" "+p.top) ,则会计算偏移量,否则如果没有警报,我总是得到 0,0。

【问题讨论】:

    标签: jquery position positioning offset


    【解决方案1】:

    这很可能是一只海森虫,这里也发布了:Why would jquery return 0 for an offsetHeight when firebug says it's 34?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多