首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Uncaught:$(.).autocomplete不是函数

Uncaught:$(.).autocomplete不是函数
EN

Stack Overflow用户
提问于 2015-11-02 13:29:25
回答 1查看 1.2K关注 0票数 0

在我的JQuery项目中,我对相当多的文本字段使用了Backbone.js UI自动完成。以正确的顺序加载库,如下所示,

代码语言:javascript
运行
复制
define(['jquery','jquery-ui.min','jquery.ui.touch-punch']);

调用自动完成函数,如下所示:

代码语言:javascript
运行
复制
$("#channelRspm").autocomplete({
 minLength: 3,
 delay: 1000,
 source: function(request, response) {
 var results = $.ui.autocomplete.filter(channel, request.term);
 response(results.slice(0, 10));
   }
});

问题是,自完成行为是非常随机的。在Chrome浏览器上运行源代码时,有时运行得完美无缺。但是,有时在控制台中会出现错误:

代码语言:javascript
运行
复制
 Uncaught TypeError: $(...).autocomplete is not a function

刷新html通常会使它再次工作,但这不是我想要的。有人能告诉我我要去哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 05:02:04

您应该确保jquery是在jquery之后使用shim加载的。

代码语言:javascript
运行
复制
require.config({
  paths: {
    "jquery": "lib/jquery",
    "jquery-ui": "lib/jquery-ui",
    "underscore": "lib/underscore",
    "backbone": "lib/backbone"
  },
  shim: {
    "underscore": {
        exports: "_"
    },
    "backbone": {
        exports: "Backbone",
        deps: ["underscore", "jquery"]
    },
    "jquery-ui": {
        exports: "$",
        deps: ['jquery']
    }
  }
});

您需要以类似的方式将jquery-ui指定为jquery.ui.touch-punch的依赖项。

然后定义模块,如下所示

代码语言:javascript
运行
复制
define(['jquery','jquery-ui','jquery.ui.touch-punch']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33478735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档