- Не работает jQuery html-метод
- Частые ошибки новичков при работе с jQuery
- почему код JQuery не работает в моем проекте
- 3 ответа
- Jquery не работает html метод
- version added: 1.0 .html()
- version added: 1.0 .html( htmlString )
- version added: 1.4 .html( function(index, oldhtml) )
- Пример:
- Примеры
- Связанные уроки:
- 15 особенностей jQuery 1.4
- Доступ к элементам контента с помощью jQuery
- JQuery html() метод не работает
- 6 ответов
Не работает jQuery html-метод
Я создаю функциональность upvote/downvote в приложении, которое я создаю. Когда пользователь нажимает кнопку «вверх» или «вниз», запрос ajax отправляется контроллеру, который обновляет подсчет голосов в базе данных, а затем запускает файл javascript, который использует jquery для обновления отображаемого количества голосов и отключения нажатия кнопки. Вот jquery для обновления дисплея:
Все работает, за исключением обновления экрана голосования и изменения кнопки upvote (другими словами, этот код не запускается. База данных обновляется, поэтому я знаю, что программа выполняется успешно.). Я также знаю, что проблема связана с jquery выше, потому что он работает, когда я показываю гораздо меньше html. Вот более простой код, который я ранее работал:
Я утверждаю, что я хватаю правильный элемент. Содержимое элемента html, которое я заменяю, это:
Я предполагаю, что есть некоторая синтаксическая ошибка jquery, но я просто не могу ее найти. Я нахожусь здесь на своем пути. Любые предложения по этому вопросу будут оценены по достоинству.
РЕДАКТИРОВАТЬ
Как указано в комментариях ответа Trip, я смог напечатать foobar, изменив это:
Однако, когда я заменяю foobar на более сложный код:
Проблема возвращается. Пользовательский дисплей не обновляется. Однако на этот раз консоль имеет ошибку jquery:
EDIT 2
После игры с кодом jquery я заметил пару вещей. Во-первых, я должен минимизировать код. Если я этого не сделаю, jQuery не срабатывает. Например, я должен сделать это:
Во-вторых, после ввода каждой строки обратно в html-метод я идентифицировал строку, которая вызывает проблему. Эта строка:
Вызывает неудачу jquery. Я пробовал линию без «сырой»:
Но все равно ничего.
РЕШЕНИЕ — AH YEA
Чтобы заставить линию ссылок работать, мне пришлось сбежать от нее так:
Источник
Частые ошибки новичков при работе с 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 не работает в моем проекте
У меня есть проблема с моим кодом, я хочу измерить общую ширину моего ul и проверить, если он меньше, чем ширина окна, он не показывает переполнение: прокрутка, и если он больше, чем ширина окна, просто скрыть прокрутку под Ли (ы).
каждый li имеет ширину 120px и его поле равно: 0 2px; Вот почему я использую 120 и 4, чтобы подвести итог общей ширины .ulcontainmatrix
Моя проблема: код работает правильно, когда я использую его в консоли браузера и нажимаю Run code, но не работает в моем коде при загрузке окна !!
3 ответа
Большая проблема, и я должен сказать, что вы правы на 90%, , но некоторые изменения необходимы.
Я изменил ваш CSS на это:
И некоторые изменения в вашем коде jquery:
И все работает отлично.
Возможно, вы захотите обернуть свой код jQuery в «готовое» событие.
Это позволит убедиться, что код javascript внутри него будет выполняться только после загрузки вашего документа (следовательно, все элементы, которые могут быть задействованы в вашем коде javascript, существуют в документе)
Другой подход состоит в том, чтобы переместить ваш javascript внизу тега body, но это не рекомендуется (как примечание: рекомендуется загружать файлы javascript внизу документа, если это возможно).
Краткое объяснение, почему это происходит .
В некоторых случаях ваш код javascript может быть выполнен до того, как некоторые элементы в вашем HTML будут добавлены и доступны для использования (процесс рендеринга документа), поэтому, если у вас есть некоторый код jQuery, который намеревается использовать или манипулировать элементом, которого еще нет доступно — ваш код не будет работать (обычно без каких-либо ошибок и заставляет задуматься «почему он не работает?»)
Поэтому проще всего вставить JavaScript после позиции в документе, куда вставляются элементы (обычно в конце документа, непосредственно перед тегом
Источник
Jquery не работает html метод
Возвращает или изменяет html-содержимое выбранных элементов
version added: 1.0 .html()
Получает HTML-содержимое первого элемента в наборе.
version added: 1.0 .html( htmlString )
htmlString
Тип: строка html
HTML строка которую нужно вставить в элемент.
version added: 1.4 .html( function(index, oldhtml) )
function(index, oldhtml)
Заменяет html-содержимое каждого выбранного элемента в наборе на возвращенное функцией function значение. Функция вызывается, для каждого из выбранных элементов.
Данный метод нельзя применять к XML документам.
Мы можем использовать метод .html() для получения содержимого элемента. Если под селектор попадут несколько элементов, то будет извлечён только первый:
Данные будут извлечены из первого
Результат будет такой:
Данный метод использует нативное свойство innerHTML. Некоторые браузеры могут возвратить результат не совсем в таком виде, в котором он присутствует на странице. К примеру, Internet Explorer иногда упускает кавычки у значений атрибутов.
Пример:
Преобразуем html в текст, при клике по параграфу.
Метод .html() может использоваться так же для замещения содержимого элемента.
Возьмём следующий HTML фрагмент:
Данная строчка заменит содержимое элемента
Начиная с jQuery 1.4, метод .html() позволяет формировать HTML контент элемента в отдельной функции.
Дан документ с шестью параграфами. Заменим их содержимое с
All new content for 6 paragraphs!
Примеры
Пример: добавляем html каждому из div-ов
Пример: добавляем html каждому из
Связанные уроки:
15 особенностей jQuery 1.4
jQuery постоянно развивается. Релиз версии 1.4 состоялся в январе. jQuery 1.4 получила много новых функций, расширений и имеет значительно лучшую производительность. Данная статья посвящена описанию основных улучшений jQuery 1.4.
Доступ к элементам контента с помощью jQuery
jQuery даёт возможность работать с элементами HTML и их содержимым различными способами. Например, вы можете добавить новые элементы внутрь, вокруг, до и после существующих элементов; вы можете заменить один элемент другим (или другими); вы можете читать и заменять содержимое элементов.
Источник
JQuery html() метод не работает
Когда страница загружается, все в порядке, я выбираю какой-то регион и выбираю города, заполненные данными ajax. Но когда я выбираю другой регион, данные в выбранных городах просто пополняются новыми данными.
Так что проблема в том, что у меня есть города из обоих регионов (новых и старых). И неважно, сколько раз я выбираю другой регион, это просто добавление новых данных в выбор города. В коде все выглядит нормально, и при изменении региона я поместил.html(»), поэтому он должен быть пустым перед вставкой полученных значений. Но я не могу понять, что это за ошибка.
6 ответов
Вы просто добавляете опции и не очищаете их вообще. Я бы опустошил ваши варианты чуть ниже того места, где вы установили cities к загрузке.
Проблема в том, что когда вы получаете данные, вы добавляете их в options переменная, которая является глобальной. Итак, просто добавьте это, прежде чем $(responce.cities).each(function()< :
И все должно быть хорошо.
Кстати, это ответ, а не ответ.:)
В функцию getCities добавьте var options=»; как первая строка Вы постоянно добавляете это, но никогда не очищаете это, следовательно, проблема.
Попробуйте сбросить ваши «options» var перед циклом:
1) city.attr(‘disabled’, true); должно быть city.prop(‘disabled’, ‘disabled’);
2) Попробуйте сбросить настройки options вернуться к пустой строке перед ее повторным заполнением следующим образом:
Источник