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

Uncaught TypeError: undefined не является функцией при загрузке jquery-min.js

Я создаю обычную веб-страницу, которая требует, чтобы я загружал около пяти файлов CSS и десять файлов Javascript.

  • При загрузке их отдельно на странице HTML моя веб-страница загружается штрафом.
  • Теперь для создания я объединил весь Javascript в один файл в нужном порядке и весь CSS в другой файл. Но когда я пытаюсь запустить веб-страницу с конкатенированными файлами, она выдает сообщение об ошибке:

    Uncaught TypeError: undefined is not a function

В строке, где jquery.min.js загружается в файл конкатенированного Javascript.

Что я могу сделать, чтобы уменьшить это? Я хочу объединить все файлы и минимизировать их для производства. Пожалуйста, помогите.


EDIT: Я объединил Javascript и CSS в том порядке, в котором они были, когда они загружались индивидуально и работали нормально.

4b9b3361

Ответ 1

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

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

Ответ 2

Возможно, вам придется повторно проверить порядок, в котором вы объединяете файлы, это должно быть что-то вроде:

  • jquery.min.js
  • JQuery-ui.js
  • любые сторонние плагины, которые вы загружаете.
  • ваш пользовательский JS

Ответ 3

Я получил ту же ошибку из двух ссылок на разные версии jQuery.

На моей главной странице:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

А также на странице:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>

Ответ 5

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

"undefined не является функцией"

Я исправил его, изменив ссылку на файл unminified jquery.validate.js, а не jquery.validate.min.js.

@MvcHtmlString.Create(
    @SquishIt.Framework.Bundle.JavaScript()
        .Add("~/Scripts/Libraries/jquery-1.8.2.min.js")
        .Add("~/Scripts/Libraries/jquery-ui-1.9.1.custom.min.js")
        .Add("~/Scripts/Libraries/jquery.unobtrusive-ajax.min.js")
        .Add("~/Scripts/Libraries/jquery.validate.js")
        .Add("~/Scripts/Libraries/jquery.validate.unobtrusive.js")
         ... more files

Я думаю, что миниатюрная версия некоторых файлов, например, при сжатии с использованием Squishit, может в некоторых случаях не иметь дело с отсутствующими полуколониями и т.п., как предлагает @Dustin, поэтому вам, возможно, придется поэкспериментировать с файлы, которые вы можете сжимать вдвойне, и которые вы просто оставляете Squishit или тому, что вы связываете с.

Ответ 6

Для тех, кто еще не смог исправить это, я сделал это, изменив 'this' на '$ (this)' при использовании jQuery.

например:

$('.icon').click(function() {
    this.fadeOut();
});

Fixed

$('.icon').click(function() {
    $(this).fadeOut();
});

Ответ 7

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

Итак, это:

isLive = isLive(data);

не удалось, вызвав сообщение об ошибке, указанное в OP.

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

isItALive = isLive(data);

Я не знаю, насколько это помогает в этой ситуации, но я решил поместить этот ответ для других, ищущих решение для подобных проблем.

Ответ 8

Да, я также исправил его изменение в js-библиотеках на unminified.

Например, в теге измените:

<script type="text/javascript" src="js/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.min.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.min.js"></script>

Для:

<script type="text/javascript" src="js/jquery.ui.core.js"></script>
<script type="text/javascript" src="js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="js/jquery.ui.rcarousel.js"></script>

Завершение "min" как unminified.

Спасибо за идею.

Ответ 9

Помните: функции Javascript CASE SENSITIVE.

У меня был случай, когда я уверен, что мой код будет работать плавно. Но все же, получил ошибку, и я проверил консоль Javascript в Google Chrome, чтобы проверить, что это такое.

Моя строка ошибок

opt.SetAttribute("value",values[a]);

И получил то же сообщение об ошибке:

Uncaught TypeError: undefined is not a function

Ничего не похоже на код выше, но он не работает. Я устраняю проблему почти час, а затем сравниваю ее с другим кодом. Моя ошибка в том, что она была установлена ​​на SetAttribute, которая должна быть SetAttribute.

Ответ 10

У меня просто было то же сообщение со следующим кодом (в IcedCoffeeScript):

f = (err,cb) ->
  cb null, true

await f defer err, res
console.log err if err  

Мне показалось, что это обычный ICS-код. Я разложил конструкцию ожидания-дефер на обычный CoffeeScript:

f (err,res) ->
  console.log err if err

В действительности я пытался передать 1 функцию обратного вызова (с двумя параметрами) для функции f, ожидая два параметра, эффективно не устанавливая cb внутри f, которые компилятор правильно сообщил как undefined is not a function.

Ошибка произошла из-за того, что я слепо вставил код шаблона обратного вызова. f не нуждается в параметре err, переданном в него, поэтому просто должно быть:

f = (cb) ->
  cb null, true
f (err,res) ->
  console.log err if err

В общем случае я бы рекомендовал дважды проверить сигнатуры функций и вызовы для сопоставления arities. Столбец вызова в сообщении об ошибке должен содержать полезные подсказки.

В вашем специальном случае я рекомендую искать определения функций, появляющиеся дважды в объединенном файле, с разными сигнатурами или назначениями глобальных переменных, удерживающих функции.

Ответ 11

Убедитесь, что вы комментировали любые комментарии. Иногда при копировании и вставке вы не учитываете "/*!".

Также, когда вы заходите в консоль, они перечисляют ваши ошибки, и вы должны брать их по одному. Если вы видите "Uncaught SyntaxError: Неожиданный токен", это может означать, что он читает ваш js файл и не проходит мимо первой строки.

/*!  * jquery.tools 1.1.2 - Отсутствует библиотека пользовательского интерфейса для Интернета  *  * [tools.tabs-1.0.4, tools.tooltip-1.1.2, tools.scrollable-1.1.2, tools.overlay-1.1.2, tools.expose-1.0.5]  *  * Copyright (c) 2009 Tero Piirainen  * http://flowplayer.org/tools/  * Сгенерировано: Wed Oct 07 09:40:16 GMT 2009  */

Ответ 12

Если есть какие-то дебилы, такие как я, у меня была эта неприятная проблема, потому что я забыл простую

new

перед созданием нового объекта.

Ответ 13

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

Другие способы устранения неполадок: убедитесь, что вы проверяете все вызовы функций jquery для дополнительных параметров.