jQuery UI "$ (" # datepicker "). datepicker не является функцией" - PullRequest
112 голосов
/ 31 июля 2009

Когда я использую DatePicker, плагин пользовательского интерфейса jQuery, на существующей странице .aspx я получаю ошибки, которые:

$("#datepicker").datepicker is not a function

Однако, когда я копирую и вставляю тот же код, который создает и использует datePicker, в файл HTML, который также находится в том же каталоге, что и страница aspx, он работает безупречно. Это заставляет меня предположить, что на странице aspx есть некоторые JS-файлы, которые мешают корректно загружать JS-файлы datePicker или JQuery UI.

Может ли кто-нибудь подтвердить мои убеждения или дать какие-либо советы по поиску виновника, который мешает плагинам пользовательского интерфейса jQuery?

Ответы [ 15 ]

187 голосов
/ 30 ноября 2010

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

32 голосов
/ 31 июля 2009

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

var $j = jQuery.noConflict();
$j("#datepicker").datepicker();

Также убедитесь, что ваши javascript-файлы находятся в правильном порядке, чтобы основная библиотека jquery была определена до jquery.ui У меня были проблемы с этой причиной.

18 голосов
/ 31 июля 2009

Эта ошибка обычно появляется, когда вам не хватает файла из набора jQuery UI.

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

8 голосов
/ 03 января 2017

jQuery «$ (» # datepicker «). Datepicker не является функцией»

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

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" type="text/javascript"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="Stylesheet" type="text/css" />
8 голосов
/ 31 июля 2009

Если вы считаете, что существует конфликт, вы можете использовать jQuery.noConflict() в своем коде. Подробности в документах .

ССЫЛКА НА ВОЛШЕБСТВО Jquery

Если вам не нравится печатать полностью "JQuery" все время, есть некоторые альтернативные ярлыки:

Переназначить jQuery на другой ярлык var $j = jQuery; (Это может быть лучший подход, если вы хотите использовать разные библиотеки) Используйте следующие техника, которая позволяет использовать $ внутри блока кода без навсегда перезаписывает $:

(function($) { /* some code that uses $ */ })(jQuery)

Примечание: если вы используете это техника, которую вы не сможете использовать Методы-прототипы внутри этой капсулы функция, ожидающая, что $ будет Прототип $, так что вы делаете выбор использовать только JQuery в этом блок. Используйте аргумент для DOM готовое событие:

jQuery(function($) { /*some code that uses $ */ });

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

То есть с конца документации и может быть полезно для вас

5 голосов
/ 31 июля 2009

Сначала сделайте очевидное: хорошо ли вы ссылаетесь на файл jquery-ui.js?

Попробуйте использовать вкладку сети firebug, чтобы узнать, загружен ли он, или код JavaScript \ Информация \ Просмотр на панели инструментов веб-разработчика.

3 голосов
/ 31 июля 2009

Вы пытались использовать Firebug для 1) определения отсутствия ошибок Javascript и 2) наличия элемента #datepicker на странице?

Скорее всего, существует ошибка перед вызовом datepicker, которая не позволяет выполнить вызов datepicker.

2 голосов
/ 20 сентября 2016

Я знаю, что этот пост довольно старый, но для справки я исправил эту проблему путем обновления версии datepicker

Стоит попробовать это тоже, чтобы избежать часов отладки.

https://cdnjs.com/libraries/bootstrap-datepicker

1 голос
/ 11 мая 2011

Я столкнулся с этой проблемой недавно - проблема заключалась в том, что я включил файлы jQuery UI в тег head, но библиотека Telerik, которую я использовал, включала jQuery в нижней части тега body (таким образом, очевидно, реинициализируя jQuery выгрузка ранее загруженных плагинов пользовательского интерфейса).

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

1 голос
/ 07 сентября 2010

Также проверьте разрешения для каталога, в который вы загружаете файлы. По какой-то причине, когда я скачал это, по умолчанию оно было сохранено в папке без доступа! Потребовалось вечно, чтобы понять, в чем проблема, но мне просто нужно было изменить разрешение для каталога и его содержимого - установив его так, чтобы ВСЕ = ЧТЕНИЕ ТОЛЬКО Отлично работает сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...