2010-07-15 100 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變量聲明之前,因爲它可以是痛苦的蟲子像這樣的一個來源。