jQuery UI“ $(”#datepicker“)。datepicker不是函数”


125

当我在现有的.aspx页面中使用jQuery的UI插件DatePicker时,出现以下错误:

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

但是,当我将创建和使用datePicker的相同代码复制并粘贴到与aspx页面位于同一目录的HTML文件中时,它可以正常工作。这使我假设aspx页面中有一些JS文件阻止了datePicker或jQuery的UI JS文件正确加载。

谁能确认我的信念或提供任何提示来找到干扰jQuery UI插件的罪魁祸首?


您能发布相关的jQuery代码吗
Russ Cam

您如何在页面上包括datepicker插件-是在ScriptManagerProxy中还是直接将其写入页面?您确定它正在加载吗?如果是这样,您还包括哪些其他插件?您确定已包含ui.core.js吗?
James Kolpack 09年

12
我发现了问题。我希望我昨天在发布此问题后的1小时内找到了这种解决方案。我编写的JS代码引用jQuery和jQuery UI javascript文件充当模块。它的父级还在body标签底部引用了jQuery(因此有2个对jQuery的引用)。由于jQuery在jQuery UI之后重新初始化,因此jQuery UI作为插件被删除,因此为什么我的代码找不到DatePicker插件。
09年

由于我使用的是Webpack,因此我需要使用jquery-ui-bundle。stackoverflow.com/a/39230057/470749
Ryan

Answers:


210

我为类似的问题苦苦挣扎了好几个小时。事实证明,jQuery被包含了两次,一次是由我向其中添加jQuery函数的程序提供,另一次是由内部调试器提供。


4
这也是我的问题。我参考了我自己的jQuery库以及不知不觉中包含jQuery的jQuery Tools CDN。
DavGarcia

这也是我的问题。我正在使用superfish,它也正在加载jquery。直到现在我都没有注意到。
rrtx2000 2014年

45
那么解决方案是什么?
Henrique Ordine

8
@HenriqueOrdine再次检查页面上没有两次包含jQuery。
Eugene van der Merwe

这也是我的问题。我在Rails资产管道中使用普通资产,并且在我的顶级元文件(application.js)中声明了jquery,并且在我的JS文件夹中有一个jquery min文件。重复声明。我刚刚删除了jQuery声明。
Mario

38

如果还有另一个使用$变量的库,则可以执行以下操作:

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

还要确保您的javascript包含的顺序正确,以便在jquery.ui之前定义jquery核心库。我有导致问题的原因。


还要确保您的javascript包含的顺序正确,以便在jquery.ui之前定义jquery核心库。我遇到了导致问题的问题<<对我来说是正确的答案。
macaesar 2013年

22

当您从jQuery UI集中丢失文件时,通常会出现此错误。

仔细检查您是否拥有所有文件,jQuery UI文件以及CSS和图像,以及它们是否在服务器上正确链接的文件/目录位置。


这个答案最接近我发布的解决方案。
burnt1ce

自我提醒:确保从本地文件切换到Google的CDN文件时,您实际上具有正确的网址。它是ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js,而不是ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery-ui.min.js,该死的。
neminem

17

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" />

1
您是救生员,无论如何,所有的答案都是经过两天不间断的奋斗挽救了我的生命。
Tejas Jaggi

8

如果您认为存在冲突,则可以jQuery.noConflict()在代码中使用。详细信息在文档中

参考魔术-JQUERY的快捷方式

如果您不喜欢一直输入完整的“ jQuery”,则可以使用一些替代的快捷方式:

将jQuery重新分配给另一个快捷方式 var $j = jQuery;(如果您希望使用其他库,这可能是最好的方法)使用以下技术,该技术允许您在代码块内使用$而不永久覆盖$:

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

注意:如果使用此技术,则无法在该封装函数内使用Prototype方法,这些方法期望$为Prototype的$,因此您可以选择在该块中仅使用jQuery。将参数用于DOM ready事件:

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

注意:同样,在该代码块内,您不能使用原型方法

从文档末尾开始,可能对您有用


7

首先来看一个明显的问题:您是否很好地引用了jquery-ui.js文件?

尝试使用firebug的网络标签来查找是否已加载,或使用Web开发者工具栏的Information \ View javascript代码。


3

您是否尝试过使用Firebug进行以下操作:1)确定没有Javascript错误,以及2)页面上存在#datepicker元素?

最有可能在datepicker调用之前发生错误,该错误阻止了datepicker调用执行。



1

我只是遇到了这个问题,</body>因此在标记为我修复之前,将JS引用和代码移至页面底部。


1

还要检查将文件下载到的目录的权限。由于某种原因,当我下载此文件时,默认情况下将其保存在不允许访问的文件夹中!花了永远的时间才找出问题所在,但我只需要更改目录及其内容的权限-将其设置为所有人=只读。现在效果很好。


1

我最近遇到了这个问题-问题是我在head标签中包含了jQuery UI文件,但是我正在使用的Telerik库在body标签的底部包含了jQuery(因此显然重新初始化了jQuery并卸载了UI先前加载的插件)。

解决方案是找出实际包含jQuery的位置,然后再包含jQuery UI脚本。


0

我只是遇到了类似的问题。当我将脚本引用从自动关闭标签(即<script src=".." />)更改为空节点(即<script src=".."></script>)时,我的错误消失了,我可以突然引用jQuery UI函数。

当时,我还没有意识到这只是我没有正确关闭它的脑筋。(我将其发布只是为了让其他遇到该线程的人也遇到类似的问题。)


0

调用前某些文件没有加载。

例如:您的代码:

<%= javascript_include_tag "distpicker.min" %>
<%= javascript_include_tag "distpicker.data.min" %>

更改为此:

<%= javascript_include_tag "distpicker.data.min" %>
<%= javascript_include_tag "distpicker.min" %>

0

我可以解决此问题,删除_Layout.cshtml上的jquery捆绑包

标头

    <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)

0

您是否尝试过使用$(“#<%= txtDateElementId.ClientID%>”)。datepicker(); 而不是$(“#txtDateElementId”)。datepicker(); 使用JQuery通过ID选择元素时。


-1

就我而言,它是通过更改以下脚本的导入顺序来解决的:之前(无效):

之后(工作):

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.