代码之家  ›  专栏  ›  技术社区  ›  burnt1ce

jquery ui“$(”datepicker“).datepicker不是函数”

  •  104
  • burnt1ce  · 技术社区  · 16 年前

    当我在现有的.aspx页面中使用jquery的ui插件datepicker时,我会得到以下错误:

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

    但是,当我将创建和使用datepicker的相同代码复制并粘贴到与ASPX页位于同一目录中的HTML文件时,它的工作是完美无缺的。这让我假设在ASPX页面中有一些JS文件阻止了日期选择器,或者JQuery的UI JS文件无法正确加载。

    有人能证实我的看法或提供任何提示来找出干扰jquery用户界面插件的罪魁祸首吗?

    15 回复  |  直到 7 年前
        1
  •  182
  •   Eugene van der Merwe    14 年前

    我为类似的问题苦苦挣扎了几个小时。结果发现jquery包含了两次,一次是由我向其中添加jquery函数的程序包含的,另一次是由我们内部的调试器包含的。

        2
  •  31
  •   MacAnthony    16 年前

    如果有另一个库正在使用$variable,您可以这样做:

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

    还要确保您的javascript include的顺序正确,以便在jquery.ui之前定义jquery核心库。我有过这样的原因。

        3
  •  18
  •   random    16 年前

    当jquery用户界面集中缺少文件时,通常会出现此错误。

    仔细检查您是否拥有所有文件、jquery用户界面文件以及CSS和图像,以及它们是否位于服务器上正确链接的文件/目录位置。

        4
  •  8
  •   AutomatedTester    16 年前

    如果你认为有冲突,你可以使用 jQuery.noConflict() 在您的代码中。详情见 docs .

    引用magic-的快捷方式 JQuery

    如果你不喜欢输入完整的 “jquery”一直都有一些 可选快捷方式:

    将jquery重新分配给另一个快捷方式 var $j = jQuery; (这可能是 如果你想使用最好的方法 不同的库)使用以下 技术,允许您使用$ 在没有 永久覆盖美元:

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

    注意:如果你用这个 技术,你将无法使用 胶囊内的原型方法 期望$ 原型是美元,所以你要做一个 选择只使用jquery 块。使用dom的参数 准备事件:

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

    注: 再说一遍,在那块你不能用的地方 原型方法

    从文件的末尾开始,可能对你有用

        5
  •  6
  •   Krishna    8 年前

    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" />
    
        6
  •  5
  •   eKek0    16 年前

    先来看明显的问题:您是否引用了jquery-ui.js文件?

    尝试使用Firebug的“网络”选项卡来查找它是否已加载,或者Web Developer工具栏的信息\查看javascript代码。

        7
  •  3
  •   Kevin Griffin    16 年前

    是否尝试使用firebug 1)确定没有javascript错误和2)页面上存在datepicker元素?

    最可能的情况是,在datepicker调用之前发生了一个错误,阻止执行datepicker调用。

        8
  •  2
  •   Yannickv    9 年前

    我知道这篇文章很旧,但作为参考,我修正了这个问题 更新日期选取器的版本

    也值得尝试避免数小时的调试。

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

        9
  •  1
  •   Banjer    15 年前

    我刚遇到这个问题,将JS引用和代码移到页面底部 </body> 标签帮我把它修好了。

        10
  •  1
  •   Matthew Fries    15 年前

    还要检查下载文件到的目录的权限。出于某种原因,当我下载这个时,默认情况下它保存在一个不允许访问的文件夹中!我花了很长时间才发现问题出在这里,但我只需要更改目录和目录内容的权限-设置它使所有人都为只读。现在工作得很好。

        11
  •  1
  •   user15486    14 年前

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

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

        12
  •  0
  •   Pang Ajmal PraveeN    12 年前

    我也遇到了类似的问题。当我将脚本引用从自动关闭标记(即, <script src=".." /> )清空节点(即, <script src=".."></script> )我的错误消失了,我可以突然引用jquery ui函数。

    当时,我还没意识到这只是我脑子里的一个屁,一开始就没关好。(我发表这篇文章只是因为有可能其他人也会遇到类似的问题。)

        13
  •  0
  •   David tsang    10 年前

    一些文件在调用前没有加载。

    例如: 您的代码:

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

    更改为:

    <%= javascript_include_tag "distpicker.data.min" %>
    <%= javascript_include_tag "distpicker.min" %>
    
        14
  •  0
  •   jaimenino    8 年前

    我可以解决这个问题,删除\u 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)
    
        15
  •  0
  •   Emil Filip    7 年前

    你试过用吗 $(“<%=txtateelementid.clientid%>”).datepicker(); 而不是 $(“txtDateElementID”).datepicker(); 使用jquery按ID选择元素时。