Javascript my jQuery自动完成功能的连续控制台错误
下面的代码没有运行,我不断得到Javascript my jQuery自动完成功能的连续控制台错误,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,下面的代码没有运行,我不断得到uncaughttypeerror:$(…)不是函数(匿名函数)@global.js:80j@jquery.min.js:2k@jquery.min.js:2,它的目标是带有“”的行(jquery)已调用。我曾尝试在文档的中重新组织我的外部脚本,并尝试使用JS lint,可惜我继续遇到这个错误 $(document).ready(function() { $(function($, undefined) { $.widget("app.autocompl
uncaughttypeerror:$(…)不是函数(匿名函数)@global.js:80j@jquery.min.js:2k@jquery.min.js:2
,它的目标是带有“”的行(jquery)代码>已调用。我曾尝试在文档的
中重新组织我的外部脚本,并尝试使用JS lint,可惜我继续遇到这个错误
$(document).ready(function() {
$(function($, undefined) {
$.widget("app.autocomplete", $.ui.autocomplete, {
_create: function() {
if(this.element.is("select")) {
var self = this;
this.original = this.element.hide();
this.element = $("<input/>").insertAfter(this.original);
this.options.source = function(request, response) {
var filter = $.ui.autocomplete.filter,
$options = self.original.find("option"),
result = $options.map(function() {
return $(this).val();
});
response(filter(result, request.term));
};
}
this._super("_create");
},
_destroy: function() {
this._super("_destroy");
this.element.remove();
this.original.show();
}
});
})(jQuery);
$(function() {
$("#autocomplete").autocomplete();
});
});
$(文档).ready(函数(){
$(函数($,未定义){
$.widget(“app.autocomplete”,$.ui.autocomplete{
_创建:函数(){
if(this.element.is(“选择”)){
var self=这个;
this.original=this.element.hide();
this.element=$(“”).insertAfter(this.original);
this.options.source=函数(请求、响应){
var filter=$.ui.autocomplete.filter,
$options=self.original.find(“选项”),
结果=$options.map(函数(){
返回$(this.val();
});
响应(过滤器(结果、请求、术语));
};
}
这个。超级(“创建”);
},
_销毁:函数(){
这个;
this.element.remove();
this.original.show();
}
});
})(jQuery);
$(函数(){
$(“#自动完成”).autocomplete();
});
});
您不需要将jQuery
变量传递给新创建的函数,因为$
已经引用了jQuery
函数。出现错误是因为当函数作为第一个参数传递时,函数$
不返回函数
$(document).ready(function() {
$.widget("app.autocomplete", $.ui.autocomplete, {
_create: function() {
if(this.element.is("select")) {
var self = this;
this.original = this.element.hide();
this.element = $("<input/>").insertAfter(this.original);
this.options.source = function(request, response) {
var filter = $.ui.autocomplete.filter,
$options = self.original.find("option"),
result = $options.map(function() {
return $(this).val();
});
response(filter(result, request.term));
};
}
this._super("_create");
},
_destroy: function() {
this._super("_destroy");
this.element.remove();
this.original.show();
}
});
$(function() {
$("#autocomplete").autocomplete();
});
});
$(文档).ready(函数(){
$.widget(“app.autocomplete”,$.ui.autocomplete{
_创建:函数(){
if(this.element.is(“选择”)){
var self=这个;
this.original=this.element.hide();
this.element=$(“”).insertAfter(this.original);
this.options.source=函数(请求、响应){
var filter=$.ui.autocomplete.filter,
$options=self.original.find(“选项”),
结果=$options.map(函数(){
返回$(this.val();
});
响应(过滤器(结果、请求、术语));
};
}
这个。超级(“创建”);
},
_销毁:函数(){
这个;
this.element.remove();
this.original.show();
}
});
$(函数(){
$(“#自动完成”).autocomplete();
});
});
为什么要将jQuery
作为一个参数传递给一个已经假定存在$
变量的函数?这一点很清楚。这部分OP代码的简化版本非常容易看到,类似这样:$(function(){})(
),但直到您指出它,我才在完整版本中注意到它。我现在从您的建议中得到了这个错误:jquery.min.js:4 uncaughttypeerror:f.getClientRects不是一个函数