2013-02-22 88 views
0

在這個小片段,我在網上找到解決我的一個問題,我看到.data(「item.autocomplete」,項目)被用作標準部分自定義UI自動填充小部件。我不能爲了我的生活找出這裏發生的事情。這些文檔對於重寫private _renderItem方法非常有限。除了那一行,我得到了一切。也許這是讓我感到困惑的連鎖。我將.data()作爲元素的基本緩存存儲。但是,我的jQuery絕對生疏。這是什麼.data函數在這個jQuery自動完成

$('#name_search').autocomplete({ 
     source: "search/name.php" 
     }).data("autocomplete")._renderItem = function(ul, item){ 
      return $("<li></li>") 
      //what is this line below?     
      .data("item.autocomplete", item) 
      .append("<a>" + item.nome + "<br>" + item.cognome + "</a>") 
      .appendTo(ul); 
     }; 
+0

from the docs:'.data()方法允許我們以任何類型的數據附加到DOM元素的數據上,從循環引用和內存泄漏安全的角度來看。「......你對此感到困惑嗎? – GiveMeAllYourCats 2013-02-22 15:13:51

+0

什麼是「item.autocomplete」?這種使用方式不在任何方法簽名中。 – 2013-02-22 15:15:18

回答

1
.data("item.autocomplete",item) 

這設置數據在菜單(當前建議項目被呈現)所生成的li s表示自動完成使用。該數據稍後將用於確定您在建議菜單中正在與哪個項目進行交互(例如,通過select事件或focus事件)。

如果您未設置此數據,自動填充將不知道特定li與特定建議項目相關聯。

+0

所以,通過鏈接.data(),我們真的使用data()和(element,key,value)簽名?而item.autocomplete是自動填充小部件開箱即用的緩存嗎? – 2013-02-22 15:20:50

+1

'$(「

  • 」)'在建議菜單中創建一個新的'li'元素。隨後調用'.data'將實際建議項目與該新元素相關聯。 'item.autocomplete'只是'.data'調用的「關鍵」。 '.data'是[jQuery對象上的實例方法](http://api.jquery.com/data/)。 – 2013-02-22 15:24:42

    +0

    請參閱我正在查看這些文檔:http://api.jquery.com/jQuery.data/與http://api.jquery.com/data/ 哇,有什麼區別。 – 2013-02-22 15:29:12

    相關問題