Ответ 1
Я боролся с подобной проблемой часами. Затем выяснилось, что jQuery был включен дважды, один раз программой, что я добавлял функцию jQuery и один раз нашим внутренним отладчиком.
Когда я использую DatePicker, плагин jQuery UI, на существующей странице .aspx я получаю ошибки, которые:
$("#datepicker").datepicker is not a function
Однако, когда я копирую и вставляю тот же код, который создает и использует datePicker для HTML файла, который также находится в том же каталоге, что и страница aspx, он работает безупречно. Это приводит меня к предположению, что на странице aspx есть некоторые файлы JS, которые предотвращают правильную загрузку файлов JQuery DatePicker или jQuery UI.
Может ли кто-нибудь подтвердить мои убеждения или дать какие-либо советы по поиску виновника, мешающего плагинам jQuery UI?
Я боролся с подобной проблемой часами. Затем выяснилось, что jQuery был включен дважды, один раз программой, что я добавлял функцию jQuery и один раз нашим внутренним отладчиком.
Если есть другая библиотека, использующая переменную $, вы можете сделать это:
var $j = jQuery.noConflict();
$j("#datepicker").datepicker();
Также убедитесь, что ваш javascript включен в правильном порядке, поэтому основная библиотека jquery определена перед jquery.ui. У меня были проблемы с этой проблемой.
Эта ошибка обычно появляется, когда вам не хватает файла из набора пользовательских интерфейсов jQuery.
Удостоверьтесь, что у вас есть все файлы, файлы пользовательского интерфейса jQuery, а также CSS и изображения и что они находятся в правильно связанном каталоге/каталоге на вашем сервере.
Если вы считаете, что есть конфликт, вы можете использовать jQuery.noConflict()
в своем коде. Подробности находятся в docs.
СПРАВОЧНАЯ МАГИЯ - КРАТКИЕ СВЕДЕНИЯ ДЛЯ Jquery
Если вам не нравится вводить полный текст "jQuery" все время, есть некоторые альтернативные ярлыки:
Переназначить jQuery другому ярлыку
var $j = jQuery;
(Это может быть лучший подход, если вы хотите использовать разные библиотеки) Используйте следующие техника, позволяющая использовать $внутри блока кода без постоянная перезапись $:
(function($) { /* some code that uses $ */ })(jQuery)
Примечание. Если вы используете это техники, вы не сможете использовать Методы прототипа внутри этой капсулированной функции, которые ожидают, что $будет Прототип $, поэтому вы делаете выбор использовать только jQuery в этом блок. Использовать аргумент для DOM готовое событие:
jQuery(function($) { /*some code that uses $ */ });
Примечание: Опять же, внутри этого блока вы не можете использовать Методы прототипа
Вот с конца документов и может быть вам полезно
Пойдите для очевидного в первую очередь: хорошо ли вы ссылаетесь на файл jquery-ui.js?
Попробуйте использовать вкладку "Сеть" firebug, чтобы узнать, загружена ли она, или код JavaScript "Информация\Просмотр" панели инструментов веб-разработчиков.
Вы пытались использовать Firebug для 1) определить, что нет ошибок Javascript, и 2) что элемент #datepicker существует на странице?
Скорее всего, перед вызовом datepicker возникает ошибка, которая препятствует выполнению вызова datepicker.
Я знаю, что этот пост довольно старый, но для справки я исправил эту проблему с помощью обновления версии datepicker
Также стоит попробовать, чтобы избежать отладки часов.
У меня была эта проблема, и перемещение ссылок и кода JS в нижней части страницы до того, как тег </body>
исправил это для меня.
Также проверьте разрешения для каталога, в который вы загружаете файлы. По какой-то причине, когда я скачал это, по умолчанию он был сохранен в папке без доступа! Наверняка навсегда выяснилось, что это проблема, но мне просто нужно было изменить разрешение для каталога и его содержимого - установите его так КАЖДОЕ = ЧИТАЙТЕ ТОЛЬКО. Прекрасно работает.
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" />
Недавно я столкнулся с этой проблемой - проблема заключалась в том, что я включил файлы пользовательского интерфейса jQuery в тег head, но в библиотеке Telerik, которую я использовал, был включен jQuery в нижней части тега body (таким образом, по-видимому, повторно инициализировался jQuery и выгрузка ранее загруженных модулей пользовательского интерфейса).
Решение заключалось в том, чтобы выяснить, где именно был включен jQuery, и включая скрипты jQuery UI после этого.
Я столкнулся с подобной проблемой. Когда я изменил ссылку script из самозакрывающихся тегов (т.е. <script src=".." />
) на пустые узлы (т.е. <script src=".."></script>
), мои ошибки ушли, и я мог внезапно ссылаться на функции пользовательского интерфейса jQuery.
В то время я не понимал, что это просто мозговой удар, который я не закрываю для этого. (Я публикую это просто на случай, если кто-либо другой, проходящий через поток, будет иметь аналогичную проблему.)
Некоторые файлы не загружаются до вашего вызова.
Например: Ваш код:
<%= javascript_include_tag "distpicker.min" %>
<%= javascript_include_tag "distpicker.data.min" %>
Изменить на это:
<%= javascript_include_tag "distpicker.data.min" %>
<%= javascript_include_tag "distpicker.min" %>
Я мог бы исправить эту проблему, удалив пакет jquery на _Layout.cshtml
Заголовок
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/kendo/2015.2.902/kendo.all.min.js"></script>
...
нижнего колонтитула
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
Смените нижний колонтитул на
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)