использование jQuery вне $ (document) .ready () - PullRequest
2 голосов
/ 20 января 2009

Я создал функцию за пределами $ (document) .ready (), но все еще использую в ней jQuery. Например:

testFunction(){
  $('#test').hide();
  alert('test');
}

Когда я вызываю testFunction () после полной загрузки страницы, #test не скрывается, но я вижу предупреждение.

Что я должен сделать, чтобы использовать jQuery внутри этой функции? Спасибо!

UPDATE:

Полезно понимать, что для работы вне $ (document) .ready () нет ограничений.

Вот почему это не работает: я не вызываю testFunction (), я вызываю parent.testFunction () из iframe, а #test находится в родительском кадре. Итак ... Я думаю, я не могу использовать '#test' в качестве селектора. Что я должен использовать?

Ответы [ 3 ]

3 голосов
/ 20 января 2009

Вы можете использовать '#test' в качестве селектора, вам просто нужно дать jQuery некоторый контекст , поскольку он всегда предполагает, что вы говорите об идентификаторе в текущем документе, а не о родительском:

// Selects the test element from the parent
var test = $('#test', parent)

EDIT
Из какого контекста загружается jQuery? IFrame или родительское окно? Это может иметь большое значение.

Я бы использовал alert(), чтобы проверить, найдено ли что-нибудь в jQuery. Вызовите alert() с объектом jQuery в качестве аргумента.

alert($('#test'));
// or
alert($('#test').get(0));
// also try
alert(document.getElementById('test'));

Если последний не работает (он должен выдавать предупреждение «HTMLElement», в зависимости от браузера), то проблема не в jQuery.

1 голос
/ 22 апреля 2014

Я знаю, что это довольно старая тема, но вот другое решение. Мог бы помочь другим: D.
jQuery('#test').hide();

0 голосов
/ 20 января 2009

Есть ли на странице элемент с идентификатором теста?

Загружен ли JQuery?

Если вы добавили #test после загрузки DOM, вам нужно будет сделать некоторые движения, чтобы повторно привязать элементы к DOM, который использует jQuery. Это может быть вашей проблемой.

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