簡體   English   中英

未捕獲的TypeError:$(…).autocomplete不是函數

[英]Uncaught TypeError: $(…).autocomplete is not a function

我在Backbone.js項目中的許多文本字段中使用了JQuery UI自動完成功能。 這些庫按以下正確順序加載:

define(['jquery','jquery-ui.min','jquery.ui.touch-punch']);

自動完成功能被調用,如下所示:

$("#channelRspm").autocomplete({
 minLength: 3,
 delay: 1000,
 source: function(request, response) {
 var results = $.ui.autocomplete.filter(channel, request.term);
 response(results.slice(0, 10));
   }
});

問題在於自動完成行為非常隨機。 在Chrome瀏覽器上運行源代碼時,有時它可以完美運行。 但是,有時我在console中收到錯誤:
未捕獲的TypeError:$(...)。autocomplete不是函數

刷新html通常可以使其再次工作,但是那不是我想要的。 有人可以建議我要去哪里嗎?

您應該確保使用shim之后加載了

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依賴jquery.ui.touch-punch

然后像這樣定義你的模塊

define(['jquery','jquery-ui','jquery.ui.touch-punch']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM