проблема положения jQuery с Chrome

Когда я предупреждаю значение .position().left, это возвращается 0 на Chrome. С другими браузерами это возвращает фактическое число. Почему это происходит?

20
задан SilentGhost 28 April 2010 в 15:03
поделиться

3 ответа

Веб-кит иногда бывает слишком быстрым, но о нем часто заботятся в jQuery. Вы можете отлаживать, используя что-то вроде:

var v, elem = $('.myElement');
window.setTimeout(function() {
    v = elem.position().left;
    console.log(v);
    if (v) {
        return false;
    }
    window.setTimeout(arguments.callee, 1);
}, 1);

Это позволит проверить, доступна ли позиция и когда она доступна. Если вы бесконечно регистрируете "0", то position().left "никогда" не будет доступна и вам нужно будет отлаживать в другом месте.

7
ответ дан 29 November 2019 в 22:54
поделиться

Самым простым может показаться:

^[^a-z]*$
-121--2198077-
m/^[^a-z]*$/

Для неанглийских символов

m/^[^\p{Ll}]*$/
-121--2198073-

У меня была та же проблема..

Я исправил его с помощью: .offset () .left . Но имейте в виду, что это не одно и то же: http://api.jquery.com/offset/

.position () .left работал в Chrome в некоторых тестах, которые я делал, используя аналогичный подход, чем у Дэвида (значение было доступно, так как первая попытка).

В моем «реальном» приложении не удалось даже чтение положения на событии click (что может исключить любую загрузку проблема скорости). Некоторые комментарии (в другом форуме) говорят, что это может быть связано к использованию дисплеев: встроенный блок . Однако я не смог воспроизвести проблему с помощью inline-block . Так что это может быть другой вещью.

6
ответ дан 29 November 2019 в 22:54
поделиться

Прочитав комментарии с http://api.jquery.com/position/ , есть несколько способов исправить это. Я обнаружил, что работает

Аджахо [Модератор]: эта функция плагина устраняет проблемы с неправильным положением в Chrome

jQuery.fn.aPosition = function() {
    thisLeft = this.offset().left;
    thisTop = this.offset().top;
    thisParent = this.parent();

    parentLeft = thisParent.offset().left;
    parentTop = thisParent.offset().top;

    return {
        left: thisLeft-parentLeft,
        top: thisTop-parentTop
    };
};
9
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: