我已经为jquery自动完成插件创建了一个包装器插件,因为我们在项目的每个地方都使用它,并且有时需要全局更改它,但每当我引用插件时我都会收到错误:Uncaught TypeError: undefined is not a function
我的插件看起来像这样:
(function ($) {
$.fn.CustomAutocomplete = function (options) {
//Settings
alert("test");
var settings = $.extend({
//Defaults
ContollerMethodLink: "",
ReturnElement: ""
}, options);
$(this).autocomplete({
source: function (request, response) {
var employees = new Array();
$.ajax({
async: false,
cache: false,
type: "POST",
url: ContollerMethodLink,
data: { "query": request.term },
success: function (data) {
for (var i = 0; i < data.length; i++) {
employees[i] = { label: data[i].Key, Id: data[i].Value };
}
}
});
response(employees);
},
select: function (event, ui) {
//fill selected customer details on form
var id = ui.item.Id;
$('#' + settings.ReturnElement).val(id);
}
});
}
})(jQuery);
然后我这样称呼它:
$(document).ready(function() {
$('#AddReportingEmpText').CustomAutocomplete({
ReturnElement: "AddReportingEmpId",
ContollerMethodLink: "@(Url.Action("Method", "Controllers"))",
});
});
然而,当我尝试使用这个时,我在$(document).ready(function() {
正上方的随机空白区域中得到了所述错误,如果我在我当前正在调用我的插件的地方硬编码ajax请求,一切正常。有什么想法吗?
编辑: 值得注意的是这是我的JS文件调用:
<script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js" type="text/javascript"></script>
然后我调用我的插件文件,调试器显示我已正确包含
答案 0 :(得分:0)
这似乎是最近版Chrome的众所周知的问题。使用FF浏览器将提供有关错误的更详细信息