未捕获的TypeError:undefined在使用jQuery UI时不是函数

我之前没有使用过jQuery,我想在我的网页上使用DateTimePicker插件。

我下载了插件文件并将它们放在与HTML文件相同的目录中。

我直接在How to use it?的代码中应用了代码How to use it? 在http://xdsoft.net/jqplugins/datetimepicker/中 。

它引发了以下错误。

未捕获的TypeError:undefined不是一个函数pixelcrawler:61(匿名函数)

我的代码如下。

     jQuery('#datetimepicker').datetimepicker();  
. . . . .

我无法弄清楚问题是什么。 我已经尝试了许多其他看似可能的选项,但它也没有用。

($ {}标签用于Mako模板语言。我使用的是Cherrypy 。)


更新:

我想出了问题的根源。

它来自jQuery('#datetimepicker').datetimepicker();

测试时, datetimepicker()函数未定义。 也许我导入库的方式错了?

 jQuery(document).ready(function(){ jQuery('#datetimepicker').datepicker(); }) 

我不知道你的文件结构。 我从来没有包含这样的本地文件,因为我从一开始就使用相对URL,而不是每次我准备好使用代码时都要更改,但很可能其中一个文件没有加载。我已经包含了标准使用谷歌CDN的jQuery UI下面的datepicker。 您的控制台是否记录未找到的任何资源?

我认为你的jQuery加载好了,因为它没有告诉你jQuery没有被定义所以它是你的一个文件。

顺便说一句,PHP获取主页URL:

 $home="http://" . $_SERVER['HTTP_HOST'].'/'; 

演示代码datepicker,jQuery UI:

      

这是关于HTML解析机制。

HTML解析器将从上到下解析HTML内容。 在你的脚本逻辑中,

 jQuery('#datetimepicker') 

将返回一个空实例,因为该元素尚未加载。

您可以使用

 $(function(){ your code here }); 

要么

 $(document).ready(function(){ your code here }); 

首先解析HTML元素,然后执行自己的脚本逻辑。

使用jQuery.noConflict()

 var j = jQuery.noConflict(); j(document).ready(function(){ j('#datetimepicker').datepicker(); }) 

对于我的情况,这是一个命名冲突问题。 添加$ J解决了它。

 //Old code: function () { var extractionDialog; extractionDialog = $j("#extractWindowDialog").dialog({ autoOpen: false, appendTo: "form", height: "100", width: "250", modal: true }); $("extractBomInfoBtn").button().on("click", function () { extractionDialog.dialog("open"); } 

以下是新代码。

  $j(function () { var extractionDialog; extractionDialog = $j("#extractWindowDialog").dialog({ autoOpen: false, appendTo: "form", height: "100", width: "250", modal: true }); $j("extractBomInfoBtn").button().on("click", function () { extractionDialog.dialog("open"); }); }); 

希望它可以帮助某人。

通常当您遇到此问题时,会发生这种情况,因为脚本正在尝试引用页面加载时尚不存在的元素。

正如Richie所说:“HTML解析器将从上到下解析HTML内容……”

因此,您可以将JavaScript引用添加到HTML文件的底部。 这不仅可以提高性能; 它还将确保HTML解析器已经加载了脚本文件中引用的所有元素。

所以你可以这样:

          

你可能会看到你是不是以某种方式加载jQuery两次。 特别是在你的插件JavaScript文件加载后。

我有同样的错误,发现我的一个外部PHP文件再次加载jQuery。

这个问题是因为没有加载jquery ui库。

https://code.jquery.com/ui/1.11.4/jquery-ui.js – CDN源文件

在文件中调用上面的路径。

如果您在滑块或幻灯片中遇到此问题,则必须使用jquery.easing.1.3

  

我无法选择使用ASP.NET 。 事实certificate我并没有正确地包含所有内容,但是这位绅士让它变得万无一失: 在ASP.NET MVC 5中使用jQuery UI的三个步骤

我不认为jQuery本身包含datetimepicker。 您必须使用jQuery UI (src =“jquery.ui”)。