在JQuery自动完成中使用当前选择器
我正在使用jqueryui的autocomplete小部件,希望能够访问当前的选择器,并将autocomplete附加到该选择器。我已经找到了一种访问选择器的方法,在这里使用了前面的问题,但是源函数的调用不正确 我当前的代码如下所示在JQuery自动完成中使用当前选择器,jquery,jquery-ui,jquery-autocomplete,Jquery,Jquery Ui,Jquery Autocomplete,我正在使用jqueryui的autocomplete小部件,希望能够访问当前的选择器,并将autocomplete附加到该选择器。我已经找到了一种访问选择器的方法,在这里使用了前面的问题,但是源函数的调用不正确 我当前的代码如下所示 $("input[id$=artist]").each(function() { e1 = $(this); curID = $(this).parent('td').parent('tr').attr('id'); e1.au
$("input[id$=artist]").each(function() {
e1 = $(this);
curID = $(this).parent('td').parent('tr').attr('id');
e1.autocomplete({
minLength: 3,
source: function(request, response) {
findSuggestions(request, response, 'artist', artist_cache, curID);
}
});
});
如您所见,我获取当前选择器并将其放入e1。有多行具有给定的“艺术家”输入,我希望能够知道findSuggestions
方法中每行的ID,但是调用该方法时,每行都被赋予相同的ID(这是引用最后一行的ID)
知道为什么会发生这种情况吗?我处理这个问题的方法有误吗
谢谢!您需要在闭包中定义变量以赋予其局部作用域,否则您将创建一个全局变量
$("input[id$=artist]").each(function() {
var e1 = $(this);
var curID = $(this).parent('td').parent('tr').attr('id');
e1.autocomplete({
minLength: 3,
source: function(request, response) {
findSuggestions(request, response, 'artist', artist_cache, curID);
}
});
});
您忘记将
var
放在curID
变量之前
这将在窗口对象上创建一个全局变量curID
,因此每个源回调函数都引用同一个对象,从而引用同一个值
改为
var curID = $(this).parent('td').parent('tr').attr('id');
永远不要忘记在变量声明之前加上
var
,因为它可能会导致像这样痛苦的错误。啊,当然!总是一个简单的错误,总是让我觉得自己很笨…谢谢你的帮助!!