Проблемы JQuery Offset - PullRequest
       27

Проблемы JQuery Offset

0 голосов
/ 03 июня 2011

У меня есть 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();
        }
 }

Теперь, если я сделаю предупреждение (p.left + "" + p.top) между ifs выше и циклом while, смещение вычисляется, иначе без предупреждения я всегда получаю 0,0.

1 Ответ

1 голос
/ 03 июня 2011

Это, скорее всего, heisenbug, как и здесь: Почему jquery возвращает 0 для offsetHeight, когда firebug говорит, что это 34?

Вероятно, у DOM не было времени на обновление после того, как вы его установили или сделали какие-то показы / скрытия (возможно, не показанные?). Предупреждение решает эту проблему, вводя небольшую задержку, достаточную для обновления DOM.

...