переменные назначения с использованием jQuery не удалось в Safari? - PullRequest
1 голос
/ 05 августа 2009

Я использую jQuery 1.3.2, и по загадочным причинам он ломается под Safari 4.

Все мои ссылки на JavaScript сделаны прямо перед тегом, но со следующим кодом:

var status = $('#status');

status.change( function(){ /* ... */ } );

В веб-инспекторе отображается следующая ошибка:

TypeError: Result of expression 'status.change' [undefined] is not a function.

Однако ошибка не возникнет, если я исключу присвоение переменной и прикреплю метод изменения напрямую так:

$('#status').change( function(){ /* ... */ } );

Почему? Мне нужно использовать переменные для этой и нескольких других ссылок findById, потому что они используются в скрипте много раз, и обход DOM для каждого элемента каждый раз считается плохой практикой. Не должно быть проблем с поиском элемента, поскольку javascript загружается после всего, кроме и.

Ответы [ 2 ]

3 голосов
/ 05 августа 2009

Попробуйте изменить переменную на значение, отличное от «status».

Это путает вашу переменную с window.status (текст строки состояния). Когда я набрал var status = $('#status') в консоли отладки, строка состояния изменилась на [Объект объекта]. Должно быть ошибка в Safari.

Если вы поместите код внутри функции, так что status станет локальной переменной функции, она должна работать.

0 голосов
/ 05 августа 2009

Это стандартная практика в jQuery, чтобы обернуть вещи в

$.onready(function() {

});

Это гарантирует, что DOM загружен, прежде чем пытаться манипулировать им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...