当我在现有的.aspx页面中使用jQuery的UI插件DatePicker时,出现以下错误:
$("#datepicker").datepicker is not a function
但是,当我将创建和使用datePicker的相同代码复制并粘贴到与aspx页面位于同一目录的HTML文件中时,它可以正常工作。这使我假设aspx页面中有一些JS文件阻止了datePicker或jQuery的UI JS文件正确加载。
谁能确认我的信念或提供任何提示来找到干扰jQuery UI插件的罪魁祸首?
当我在现有的.aspx页面中使用jQuery的UI插件DatePicker时,出现以下错误:
$("#datepicker").datepicker is not a function
但是,当我将创建和使用datePicker的相同代码复制并粘贴到与aspx页面位于同一目录的HTML文件中时,它可以正常工作。这使我假设aspx页面中有一些JS文件阻止了datePicker或jQuery的UI JS文件正确加载。
谁能确认我的信念或提供任何提示来找到干扰jQuery UI插件的罪魁祸首?
Answers:
我为类似的问题苦苦挣扎了好几个小时。事实证明,jQuery被包含了两次,一次是由我向其中添加jQuery函数的程序提供,另一次是由内部调试器提供。
如果还有另一个使用$变量的库,则可以执行以下操作:
var $j = jQuery.noConflict();
$j("#datepicker").datepicker();
还要确保您的javascript包含的顺序正确,以便在jquery.ui之前定义jquery核心库。我有导致问题的原因。
当您从jQuery UI集中丢失文件时,通常会出现此错误。
仔细检查您是否拥有所有文件,jQuery UI文件以及CSS和图像,以及它们是否在服务器上正确链接的文件/目录位置。
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.noConflict()在代码中使用。详细信息在文档中。
参考魔术-JQUERY的快捷方式
如果您不喜欢一直输入完整的“ jQuery”,则可以使用一些替代的快捷方式:
将jQuery重新分配给另一个快捷方式
var $j = jQuery;(如果您希望使用其他库,这可能是最好的方法)使用以下技术,该技术允许您在代码块内使用$而不永久覆盖$:
(function($) { /* some code that uses $ */ })(jQuery)
注意:如果使用此技术,则无法在该封装函数内使用Prototype方法,这些方法期望$为Prototype的$,因此您可以选择在该块中仅使用jQuery。将参数用于DOM ready事件:
jQuery(function($) { /*some code that uses $ */ });
注意:同样,在该代码块内,您不能使用原型方法
从文档末尾开始,可能对您有用
我知道这篇文章已经很老了,但作为参考,我通过更新datepicker的版本来解决此问题。
避免长时间的调试也值得尝试。
我最近遇到了这个问题-问题是我在head标签中包含了jQuery UI文件,但是我正在使用的Telerik库在body标签的底部包含了jQuery(因此显然重新初始化了jQuery并卸载了UI先前加载的插件)。
解决方案是找出实际包含jQuery的位置,然后再包含jQuery UI脚本。
我可以解决此问题,删除_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)
您是否尝试过使用$(“#<%= txtDateElementId.ClientID%>”)。datepicker(); 而不是$(“#txtDateElementId”)。datepicker(); 使用JQuery通过ID选择元素时。