Частые ошибки новичков при работе с jQuery
На разного рода форумах, я встречал и встречаю однотипные ошибки, которые допускают новички при работе с библиотекой jQuery и из-за которых их код работает не правильно или вообще не работает. Поэтому, я решил написать статью-шпаргалку, которая поможет исправить свои недочеты самостоятельно или избежать ошибок в будущем.
Консоль должна быть открыта. Закрытая консоль, конечно же, не ошибка в коде, однако, ошибочный подход во время отладки сценария. Именно консоль поможет быстро сориентироваться в том, где и какая допущена ошибка, а также следить за ходом выполнения сценария. Во всех современных браузерах — этот инструмент присутствует по умолчанию. Например, в FireFox консоль можно вызвать с помощью сочетания клавиш Ctrl + Shift + K или «Меню» > «Разработка» > «Веб-консоль«. В Chrome вызывается сочетанием клавиш Ctrl + Shift + J или «Меню» > «Дополнительные инструменты» > «Консоль JavaScript«. В Opera — сочетание клавиш аналогичны Chrome, вызов из меню — «Инструменты разработчика» > «Веб-инспектор» («Инструменты разработчика» предварительно включить в пункте «Другие инструменты»). Кроме того, существуют инструменты/аддоны, как, например, замечательный FireBug под FireFox или Web Developer для Chrome и этот же инструмент для FireFox
Не подключена библиотека. У кого-то этот пункт вызовет улыбку, но могу вас уверить, что по моей личной статистике, как минимум раз в месяц, на форуме появляется вопрос о том, почему ничего не работает, а после долгих выяснений оказывается, что js-файл с библиотекой просто не подключен на странице. Библиотека jQuery должна быть по возможности новее, подключена первой, до скриптов, в которых она используется и в единственном числе. Если вы используете какой-нибудь старенький плагин, которому для работы требуется такая же старая версия jQuery, то есть несколько нормальных путей решения, чем подключение на страницу и новой библиотеки и старой для плагина:
- Оставляем одну новую библиотеку и сразу после неё подключаем плагин jQuery Migrate, который, в большинстве случаев, помогает решить вопрос совместимости.
- Без каких-либо дополнений, сами заменяем в плагине удаленные методы на их современные аналоги. Обычно, это такие устаревшие или удаленные методы, как live(), $.browser и т.д.
- И конечно же, можно найти современный аналог плагина, который вам понравился. Не зацикливайтесь на одном.
Ну, и примерный порядок подключения:
Код не обернут в конструкцию DOM-Ready. Одна из наиболее популярных ошибок. Если ваш скрипт расположен/подключен в теге , то его нужно обязательно заключить в такой код:
Это так называемый «обработчик готовности дерева DOM«. Попробую «на пальца» и простым языком объяснить, что это и зачем нужно. Браузер загружает страницу, начиная с первого на ней элемента и движется вниз. Всё, что подключено в теге : CSS, JS и т.д., загрузится и начнёт выполняться раньше, чем дело дойдёт до элементов, которые находятся в . Поэтому, при обращении к элементу из JS-кода, его еще попросту нет на странице. А обёртка, которую я показал выше, откладывает выполнение сценария до тех пор, пока вся структура страницы не будет загружена браузером полностью. Как вариант, который совсем не лишён логики и даже рекомендуется тем же Google, весь свой код можно расположить в конце страницы, перед закрывающим тегом
Источник
Не работает jQuery на локальном сервере
Помощь в написании контрольных, курсовых и дипломных работ здесь.
JS работает медленно на сервере. На локальном сервере быстро. В чём разница
Вечер добрый Сайт уже загрузил все JS/CSS/HTML. И после этого начинаются лаги. При открытие.
PHP скрипт (SellFileEasy) работает на локальном сервере, но не работает на хостинге
Всем доброго времени суток! Данный скрипт предназначен для продажи файлов. При переходе на.
Код работает на локальном сервере, но на хостинге уже не работает
Привет всем) Помогите плиз. Есть веб проект, который я делал на локальной базе из сборки EasyPHP.
На сайте работает, а на локальном сервере — нет
Здравствуйте. Вот не могу понять, установил сайт на хостинг, потом скачал его оттуда к себе на.
Файл script.js оформите так
Столкнулся с такой проблемой, есть сайт вордпрес на локальном сервере, при попытке открыть его в.
Установить куки на домен и сабдомены. На сервере работает, на локальном нет
Добрый день! Как установить куки на домен и сабдомены? Пробовал setcookie(«c_nickname», ‘MCB’.
Запуск на локальном сервере
Здравствуйте, Друзья. Знакомлюсь с HTML. Установил Denwer3 (Ос — Windows7). Создал документ.
Сайт на локальном сервере
Здравствуйте! Есть сайт скаченный с хостинга, сайт готовый и работает, но вся беда в том, что при.
Mail() на локальном сервере
Захотелось потестить функцию mail() на локальном сервере. Я начал гуглить, и почти во всех форумах.
Кодировка на локальном сервере
тестирую сайт на локальном сервере и возникла проблема.. в БД везде проставлена кодировка.
Источник
Не работает jQuery на локальном сервере
Помощь в написании контрольных, курсовых и дипломных работ здесь.
JS работает медленно на сервере. На локальном сервере быстро. В чём разница
Вечер добрый Сайт уже загрузил все JS/CSS/HTML. И после этого начинаются лаги. При открытие.
PHP скрипт (SellFileEasy) работает на локальном сервере, но не работает на хостинге
Всем доброго времени суток! Данный скрипт предназначен для продажи файлов. При переходе на.
Код работает на локальном сервере, но на хостинге уже не работает
Привет всем) Помогите плиз. Есть веб проект, который я делал на локальной базе из сборки EasyPHP.
На сайте работает, а на локальном сервере — нет
Здравствуйте. Вот не могу понять, установил сайт на хостинг, потом скачал его оттуда к себе на.
Файл script.js оформите так
Столкнулся с такой проблемой, есть сайт вордпрес на локальном сервере, при попытке открыть его в.
Установить куки на домен и сабдомены. На сервере работает, на локальном нет
Добрый день! Как установить куки на домен и сабдомены? Пробовал setcookie(«c_nickname», ‘MCB’.
Запуск на локальном сервере
Здравствуйте, Друзья. Знакомлюсь с HTML. Установил Denwer3 (Ос — Windows7). Создал документ.
Сайт на локальном сервере
Здравствуйте! Есть сайт скаченный с хостинга, сайт готовый и работает, но вся беда в том, что при.
Mail() на локальном сервере
Захотелось потестить функцию mail() на локальном сервере. Я начал гуглить, и почти во всех форумах.
Кодировка на локальном сервере
тестирую сайт на локальном сервере и возникла проблема.. в БД везде проставлена кодировка.
Источник
Почему не работает jQuery post?
В консоле пусто
При редиректе
Notice: Undefined index: name in C:\xampp\htdocs\test\test.php on line 3
Notice: Undefined index: time in C:\xampp\htdocs\test\test.php on line 4
HAbRAhabp:
В консоле пусто
При редиректе
Notice: Undefined index: name in C:\xampp\htdocs\test\test.php on line 3
Notice: Undefined index: time in C:\xampp\htdocs\test\test.php on line 4
Как я понял, ТС хочет перейти на страницу /test.php с параметрами, что передает в ajax. Потом, с помощью css селектора jQuery выбирает location и меняет ему атрибут href 😀
Правильнее будет создать форму и сделать ее сабмит. Вот так:
POST не успевает отработать.
Все команды выполняются одна за одной, не ожидая выполнения предыдущей.
Если Вам нужно сделать редирект после успешного POST сделайте так:
Так редирект выполнится только в случае успешного выполнения запроса.
Срабатывает ли вызов функции? Например , вот так :
‘hi!’ выводится в консоли?
если да, то в этой же консоли смотрите отправляется ли запрос. Если да, то что появляется в консоли после отправки запроса? В общем, консоль вам все покажет )))
Источник
Почему не работает javascript после ajax получения ответа?
На странице реализована фильтрация товаров через ajax.
После получения ответа от сервера и его вставки на страницу перестает работать скрипт с ховер эффектом.
Скрипт подключен в head
Код отправки ajax запроса и обработка ответа
Пробовала строку
$(«#sectionproducts»).empty().append(content);
заменить на
$(«#sectionproducts»).empty().html(content);
Результат не меняется
Как можно решить проблему работы скриптов после отправки ajax запроса?
- Вопрос задан более трёх лет назад
- 33030 просмотров
Добрый день.
Может это конечно и некропост, но все же я хотел написать по поводу 2го пункта, про событие jQuery.on().
Везде написано
Но более точное и правильное я нашел в сети, чтобы скрипт отрабатывал именно на подгруженных ajax элементах:
Решено! JQuery обработчики, такие как hover(), click(), bind(), on() и т.д. обрабатывают элементы только при загрузке.
Чтобы они реагировали на подгруженный ajax’ом контент, есть несколько решений:
- Загрузить ajax’ом скрипт заново(не лучший вариант). Но работает.
- Использовать обработчик live(). Но с версии >= JQuery 1.9 его убрали и перенесли в обработчик on(), в котором объединили и bind(), и delegate().
- На мой взгляд, самый лучший. Для тега установить атрибут onClick, установить ему значение функции, например:
а в скрипте переделать обработчики в функцию.
Вместо:
Т.е. у тэга div при нажатии атрибут onClick вызывает эту функции. И тут без разницы, подгружен контент ajax’ом или нет.
Если хотите в функции использовать значение $(this), то задайте в атрибуте у функции onClick=»function_name(this);», а в скрипте в функции задайте событие для этого значения
Надеюсь, кому-то будет полезно 🙂
Почему такой вариант не рассматривается?
Я так пользуюсь давно. сам когда-то натыкался на это, но так же быстро решил. оказывается это прям ВОПРОС))
Для извращенцев, вот так ещё можно:
Спасибо, по всякому уже пробовал, это помогло!
Источник