jQuery $ (this) .position (). top не работает в Chrome - PullRequest
4 голосов
/ 21 июня 2011

Мне было интересно, будет ли какая-то причина, по которой этот кусок кода не будет работать ...

top = $(this).find('ul').position().top;

Он работает в IE, Firefox и Safari, однако когда я оповещаю о выходе в Chrome, он говорит, что объект окна DOM ... Мне нужно целое число. Зачем ему оповещать об объекте окна DOM?

Ответы [ 2 ]

12 голосов
/ 21 июня 2011

Вы уверены, что действительно предупреждаете , что top? Напомним, что top - это уже существующая глобальная переменная в размещенном в браузере JavaScript (это window.top, окно верхнего уровня).

Обновление : Интересно, что Chrome не позволит вам неявно перезаписать top (что, вероятно, хорошо): Демо . Просто объявите вашу переменную (всегда хорошая идея) в любой функции, в которой находится этот код (этот код равен в функции, верно?), Которая будет shadow it, и так, чтобы будет работать: Демо . E.g.:

var top = $(this).find('ul').position().top;

Важно объявить ваши переменные, чтобы не стать жертвой Ужаса неявных глобалов . И, как вы выяснили в этом случае, избегать глобальных значений всегда лучше, поскольку Chrome даже не позволит использовать top в качестве глобального, если вы объявите его (снова для защиты window.top).

2 голосов
/ 21 июня 2011

Убедитесь, что вы присваиваете значение переменной локальной области видимости. Используйте ключевое слово var.

var top = $(this).find('ul').position().top;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...