Почему $(документ) уже не стреляет?
В php файле я использовал include
для включения следующего файла js.php
и до этого я включил файл jquery.
<script type="text/javascript">
$(document).ready(function(){
alert("hello");
});
</script>
Но это не сработает. Зачем? когда я пропускаю функцию $(document).ready, она работает.
Но мне нужен код jquery внутри. что не так?
Ответы
Ответ 1
Наиболее вероятный ответ, основанный на том, что вы сказали, заключается в том, что основной файл jQuery на самом деле не включен правильно на странице.
Вам нужно что-то вроде:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
Скорее всего, это неверно или неверно напечатано.
Ответ 2
Другая причина, которая будет терпеть неудачу, и все остальные обратные вызовы никогда не вызывались:
$(document).ready(null);
Поэтому проверьте, есть ли у вас переменные или синтаксические ошибки, возвращающие значение null. Как этот:
$(document).ready(function($){}(jQuery));
Обратите внимание, что функция выше вызывается мгновенно и возвращается undefined.
Ответ 3
- Проверьте правильность загрузки jQuery.
- Посмотрите на панель выполнения браузера: она может загружать некоторые счетчики, и документ не готов, пока они не будут загружены: это часто происходит, когда внешние ресурсы медленны.
- Попробуйте
$(function(){ alert(...); });
на всякий случай...
- Проверьте, есть ли у вас ошибки JS до этого привязки onload. Используйте Firefox FireBug плагин, чтобы проверить его.
Ответ 4
Также посмотрите, как вы определяете тег jquery include. Кажется, по какой-то причине вам нужно открыть и закрыть тег двумя отдельными тегами. Использование одного тега с закрытием кажется неработоспособным:
Работы:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
Не работает:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"/>
Ответ 5
Я столкнулся с аналогичной проблемой, и это то, что я сделал.
Убедитесь, что document.ready размещен после функция обратного вызова определена в вашем файле javascript.
Здесь init еще не определен, когда document.ready обрабатывается.
//won't work
$(document).ready(init);
var init = function() {
console.log('init not called');
}
Правильный метод:
//Works
var init = function() {
console.log('document is ready');
}
$(document).ready(init);
Обратите внимание, что $(document).ready(init) помещается в конец.
Ответ 6
Да, я заметил, что иногда это проблема, я написал для вас безопасное решение, которое исправляет эту проблему.
// jquery plugin 'jquery.ready.fix.js'
// @author Szymon Działowski
;(function ($) {
$.fn.ready.old || $(function (r) {
r = $.fn.ready;
$.fn.ready = function (fn) { $.isReady ? fn() : r(fn); };
$.fn.ready.old = r;
});
})(jQuery);
после этого вы можете запустить код:
$(function () {alert('go')})
и всегда срабатывает предупреждение.
PS: это метод, называемый "утиная штамповка" больше о: http://www.paulirish.com/2010/duck-punching-with-jquery/
Ответ 7
Следуя за Zakas Искусство метать ошибки JavaScript, я начал бросать свои собственные ошибки в JavaScript в качестве подхода к поиску проблем JS.
Но этот подход, к сожалению, начал приводить к тому, что функции jQuery ready() молча проваливаются, для несвязанных частей сайта.: (
Я узнал, что следующее:
throw new Error()
отличается от
console.error()
Итак, я начал использовать console.error(), и я все еще получил красную подсветку в консоли.
Ответ 8
Еще один вопрос: возможно, у вас есть PHP-ошибка в вашей программе. Неустранимая ошибка PHP выходит из script и $(document).ready
никогда не будет выполнена.
В зависимости от настроек вашего сервера или вашего CSS вы можете не видеть сообщение Неустранимая ошибка.
Ответ 9
В моем случае document.ready не был вызван, потому что форма html была отправлена на сервер по запросу Ajax, и только часть документа была восстановлена - и готовый документ не вызывается после запроса ajax.
В результате некоторые кнопки, которые были на той части, которая была перезагружена, больше не были привязаны к событиям .click() atc.., потому что эти кнопки были новыми, и привязка этих событий была вызвана во время подготовки документа только в первый раз - не для AJAX.
Ответ 10
Просто этот сюжет появился, и это оказалось ошибкой орфографии в теге скрипта:
<script type="text/javscript">
Обратите внимание на отсутствующий "a" в javascript. Изменение просто:
<script>
Исправлена проблема.
Ответ 11
вместо $(document).ready(function() {...});
попробуйте
$(document).ready(abc());
функция abc() {
....
}
работал на меня. Я сам искал много мест, но не смог найти решение. Пробовал это случайно и работает!!
Ответ 12
У меня была такая проблема, просто изменил <script type="text/javascript">
на <script type="javascript">
и все проблемы ушли!