Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JQuery自动完成中使用当前选择器_Jquery_Jquery Ui_Jquery Autocomplete - Fatal编程技术网

在JQuery自动完成中使用当前选择器

在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

我正在使用jqueryui的autocomplete小部件,希望能够访问当前的选择器,并将autocomplete附加到该选择器。我已经找到了一种访问选择器的方法,在这里使用了前面的问题,但是源函数的调用不正确

我当前的代码如下所示

$("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
,因为它可能会导致像这样痛苦的错误。

啊,当然!总是一个简单的错误,总是让我觉得自己很笨…谢谢你的帮助!!