Javascript document ready не работает

$ (document).ready(функция() не работает

Я использую JQuery для получения json-объекта с сервера solr. Когда я запускаю свой html файл с Tomcat, он отлично работает, но когда я вставляю его в свой проект, который работает в weblogic, он получает эту ошибку: (отладка выполняется через firebug)

Почему я получаю эту ошибку, когда я вставляю ее в свой проект?

Это содержимое моего тега . Вот как я включаю jquery.js:

Вы загрузили jQuery в разделе head ? Вы правильно загрузили его?

Этот код предполагает, что jquery.js находится в каталоге scripts . (Вы можете изменить имя файла, если хотите)

Вы также можете использовать jQuery размещенный Google:

Согласно вашему комментарию:

По-видимому, ваш веб-сервер не настроен на возврат jQuery-1.6.1.js при запросе /webProject/jquery-1.6.1.js . Для этого может быть множество причин, таких как неправильное имя файла, имя папки, параметры маршрутизации и т.д. Вам нужно создать другой вопрос и описать ваш 404 более подробно (например, имя локального файла, операционную систему, имя веб-сервера и настройки).

Опять же, вы можете использовать jQuery, как указано в Google (см. выше), однако вы все равно можете узнать, почему некоторые локальные файлы не получают по запросу.

Я нашел, что нам нужно иногда использовать noConflict:

Многие библиотеки JavaScript используют $как имя функции или переменной, как это делает jQuery. В случае jQuery $ является просто псевдонимом для jQuery, поэтому вся функциональность доступна без использования $ . Если вам нужно использовать другую библиотеку JavaScript вместе с jQuery, верните элемент управления $ обратно в другую библиотеку с вызовом $.noConflict() . Старые ссылки $ сохраняются во время инициализации jQuery; noConflict() просто восстанавливает их.

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

Кроме того, в отдельной заметке вы можете использовать $(function()< как сокращенное обозначение $(document).ready(function()<

Если у вас есть js файл, который ссылается на jquery, это может быть связано с тем, что файл js находится в теле, а не в главном разделе (это была моя проблема). Вы должны перенести свой файл js в раздел главы ПОСЛЕ ссылки jquery.js.

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

У меня такая же проблема… на http://www.xaluan.com.. но после журнала. Я узнаю, что после запуска jQuery я создаю функцию, используя один элемент id, который не существует.

поэтому id=»aaa» не существовало.. тогда jQuery перестает работать.. потому что такие ошибки

Или его более короткая версия:

У меня была эта проблема, и из-за меня я пытался включить jQuery через http, пока моя страница была загружена как https.

У меня была такая же проблема в Chrome, где мои скрипты были такими:

Читайте также:  Отсечной клапан atoll cv0201 как починить

Источник

JQuery: почему функция document.ready не работает должным образом

Я пытаюсь узнать jQuery, и я запутался, как работает функция document.ready ()

Ссылки находятся в самом низу документа, непосредственно перед закрывающим тегом body. В моем файле javaScript у меня есть весь мой код внутри функции .ready. Тем не менее, когда я загружаю страницу и нахожу указатель мыши на ссылку, мой курсор не превращается в указатель в течение пары секунд, и если я сразу же прокручиваю вниз, текст еще не загружен в течение пары секунд, либо , В моем файле javaScript есть несколько iframes и т. Д., Поэтому я могу понять, почему задержка, но меня смущает то, что я думал, что весь смысл функции .ready заключается в том, что javaScript не загружался, пока все остальное на странице был загружен первым? Так что, конечно, мой текст и мой CSS должны работать сразу? Вот мой код, если это поможет. Я могу опубликовать CSS тоже, если требуется.

Я действительно знаю, что мой код повторяется, я учу себя так, чтобы сейчас заставить его работать. Почему моя главная страница загружается так долго, если весь мой код находится внутри «document.ready»? Спасибо за ваше время

4 ответа

Вместо этого вы можете привязать свой JavaScript к событию window.load, как это

Document ready позволяет получить доступ к полной разметке, даже если изображения и фреймы еще не загружены, в большинстве случаев это желательно.

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

$(document).ready() будет ожидать только загрузки всех элементов страницы. Это НЕ будет ждать, пока iFrames загрузит их содержимое.

Вы можете обратиться к этому сообщению, если у вас есть дополнительные вопросы:

Случилось и со мной тоже. Я обнаружил, что решение состоит в том, чтобы включить файл внизу вне тега html (т.е. файл, в котором вы используете $ (document) .ready ()).

Я предполагаю, что это потому, что HTML-документ не готов к тому времени, когда компилятор браузера достиг этой функции.

Вы уверены, что JQuery загружается правильно? Свойство source (src) должно указывать на правильный путь. Я считаю, что использование инструментов разработчика для анализа ошибок, манипулирования CSS и проверки состояния DOM полезно при обучении. Я предпочитаю Chrome.

Источник

Форум

Справочник

Опции темы Искать в теме

здравствуите
скажите плиз почему такои код не работает ?

vadim5june, разве это решение? со стороны смотрится как гавнокод.

У меня встречный вопрос dadli зачем ты затолкал эту функцию в

она и так будет работать и не нужно будет писать то что выше, как решение

Сообщение от beard vadim5june, разве это решение? со стороны смотрится как гавнокод.
У меня встречный вопрос dadli зачем ты затолкал эту функцию в

она и так будет работать и не нужно будет писать то что выше, как решение

Он мог ее туда затолкать из-за контеста-то есть на глобальном уровне она уже не будет работать
Я согласен что окончательный результат некрасивый но ведь много отвечающих-кто то поправит
А если ее нельзя оттуда вынести-как решить вопрос?

Читайте также:  Как починит спиннинговую катушку

Если он ее привязал как он это сделал, значит там не нужно

ее можно свободно написать как есть, и в ней использовать jquery, так как она сработает когда уже все прогрузится в любом случае. И не париться про $(document).ready, юзать в ней селекторы и все остальное jquery

А если уже заталкивать через $(document).ready то тогда уже глупо как по мне привязывать так, нужно элементу дать id/class и привязаться через выборку элемента + click

Я понимаю что ты хотел сделать и сделал и помог и все рады наверно, но реально это жесть.

Источник

Функция javascript не работает в блоке jquery $ (document) .ready

Я пытаюсь вызвать функцию JavaScript из триггера onclick .

И JavaScript код

Это не работает.

Но если я оставлю функцию JavaScript вне кода $(document).ready() , это сработает. Ниже приведен соответствующий фрагмент кода:

1) Почему не работает первый JavaScript фрагмент кода?

2) Как мне заставить работать первый JavaScript фрагмент кода?

РЕДАКТИРОВАТЬ:

ТАК КАК Я ЗНАЮ, $(document).ready() выполняется, когда веб-страница полностью загружается. Итак, как я могу запретить my_func() быть активным до или после полной загрузки страницы, если я напишу my_func() вне $(document).ready() ?

5 ответов

Все дело в контекстах и объеме выполнения JavaScript.

Все, что вы определяете внутри функции, известно только в этой функции.

В вашем первом тесте функция my_func() может использоваться только в пределах готового обратного вызова (и во внутренних других объектах). Вы не можете ссылаться на это снаружи.

Во втором примере функция my_func() является глобальной для документа и доступна из любого места.

Я понимаю, что это может быть очень простое объяснение 🙂

Я предполагаю, что «это не работает», вы имеете в виду, что это говорит «my_func не определен» или подобное?

Когда вы определяете функцию внутри функции, внутренняя функция не видна за пределами внешней функции (если она не является частью оператора возврата внешней функции).

Вам необходимо узнать о замыканиях, хороший учебник по которым можно найти здесь .

Ваш первый фрагмент не работает, потому что в функции my_func111 определено в локальной области действия анонимной функции , переданной в качестве аргумента в вашем вызове $(document).ready .

Вы можете исправить свой код, поместив определение функции в область документа и вызвав его внутри функции ready, например:

Вы добавите глобальную переменную isReady . Раздел обратного вызова $(document).ready изменит его на true .

Ваша функция и переменная isReady должны быть определены вне обратного вызова $(document).ready , чтобы их можно было увидеть за пределами области обратного вызова.

Ваш HTML-код не нуждается в изменениях. — Я изменил имена, чтобы использовать соглашения JS и HTML, но по сути это то же самое, что вы изначально написали .

Если вы определяете свою функцию в обратном вызове, вы можете использовать ее только в этом обратном вызове:

Источник

Частые ошибки новичков при работе с jQuery

На разного рода форумах, я встречал и встречаю однотипные ошибки, которые допускают новички при работе с библиотекой jQuery и из-за которых их код работает не правильно или вообще не работает. Поэтому, я решил написать статью-шпаргалку, которая поможет исправить свои недочеты самостоятельно или избежать ошибок в будущем.

Читайте также:  Настроить роутер apple как репитер

Консоль должна быть открыта. Закрытая консоль, конечно же, не ошибка в коде, однако, ошибочный подход во время отладки сценария. Именно консоль поможет быстро сориентироваться в том, где и какая допущена ошибка, а также следить за ходом выполнения сценария. Во всех современных браузерах — этот инструмент присутствует по умолчанию. Например, в FireFox консоль можно вызвать с помощью сочетания клавиш Ctrl + Shift + K или «Меню» > «Разработка» > «Веб-консоль«. В Chrome вызывается сочетанием клавиш Ctrl + Shift + J или «Меню» > «Дополнительные инструменты» > «Консоль JavaScript«. В Opera — сочетание клавиш аналогичны Chrome, вызов из меню — «Инструменты разработчика» > «Веб-инспектор» («Инструменты разработчика» предварительно включить в пункте «Другие инструменты»). Кроме того, существуют инструменты/аддоны, как, например, замечательный FireBug под FireFox или Web Developer для Chrome и этот же инструмент для FireFox

Не подключена библиотека. У кого-то этот пункт вызовет улыбку, но могу вас уверить, что по моей личной статистике, как минимум раз в месяц, на форуме появляется вопрос о том, почему ничего не работает, а после долгих выяснений оказывается, что js-файл с библиотекой просто не подключен на странице. Библиотека jQuery должна быть по возможности новее, подключена первой, до скриптов, в которых она используется и в единственном числе. Если вы используете какой-нибудь старенький плагин, которому для работы требуется такая же старая версия jQuery, то есть несколько нормальных путей решения, чем подключение на страницу и новой библиотеки и старой для плагина:

  1. Оставляем одну новую библиотеку и сразу после неё подключаем плагин jQuery Migrate, который, в большинстве случаев, помогает решить вопрос совместимости.
  2. Без каких-либо дополнений, сами заменяем в плагине удаленные методы на их современные аналоги. Обычно, это такие устаревшие или удаленные методы, как live(), $.browser и т.д.
  3. И конечно же, можно найти современный аналог плагина, который вам понравился. Не зацикливайтесь на одном.

Ну, и примерный порядок подключения:

Код не обернут в конструкцию DOM-Ready. Одна из наиболее популярных ошибок. Если ваш скрипт расположен/подключен в теге , то его нужно обязательно заключить в такой код:

Это так называемый «обработчик готовности дерева DOM«. Попробую «на пальца» и простым языком объяснить, что это и зачем нужно. Браузер загружает страницу, начиная с первого на ней элемента и движется вниз. Всё, что подключено в теге : CSS, JS и т.д., загрузится и начнёт выполняться раньше, чем дело дойдёт до элементов, которые находятся в . Поэтому, при обращении к элементу из JS-кода, его еще попросту нет на странице. А обёртка, которую я показал выше, откладывает выполнение сценария до тех пор, пока вся структура страницы не будет загружена браузером полностью. Как вариант, который совсем не лишён логики и даже рекомендуется тем же Google, весь свой код можно расположить в конце страницы, перед закрывающим тегом

Источник

Оцените статью