2010-07-15 105 views
2

使用电流选择我使用jQuery UI的自动完成构件,并希望有机会到我附加了自动完成当前的选择。我找到了一种访问选择器的方法,使用前面的问题,但源函数调用不正确。在JQuery的自动完成

我当前的代码看起来像这样

$("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(这是参考上的行。

任何想法,为什么这可能发生?我是不正确的处理这个问题?

谢谢!

回答

3

您需要定义瓶盖内您的变量给它局部范围,否则你正在创建一个全局变量

$("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); 
     } 
    }); 
}); 
+0

啊,当然!总是一个简单的错误,总是让我感到沮丧......感谢您的帮助! – 2010-07-15 08:02:26

2

你忘记把var放在curID变量之前。

即窗口对象上创建一个全局变量curID,所以每次源回调函数指的是同一物体,因此值。

更改为

var curID = $(this).parent('td').parent('tr').attr('id');  

千万不要忘记把var变量声明之前,因为它可以是痛苦的虫子像这样的一个来源。