Подтвердить что ты не робот

Почему $(документ) уже не стреляет?

В php файле я использовал include для включения следующего файла js.php и до этого я включил файл jquery.

<script type="text/javascript">

$(document).ready(function(){
     alert("hello");
});
</script>

Но это не сработает. Зачем? когда я пропускаю функцию $(document).ready, она работает.

Но мне нужен код jquery внутри. что не так?

4b9b3361

Ответ 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"> и все проблемы ушли!