2012-11-08 41 views
1
$("selector").autocomplete({ ... }).data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.label + "<br>" + item.desc + "</a>") 
     .appendTo(ul); 
}; 

from here猴子修補一個jQuery用戶界面自動完成渲染項目

這是什麼做一點我.data("autocomplete")雖然使用數據附加關鍵值對DOM元素data-foo屬性的一部分。但在這裏似乎並不是這種情況?

+0

有沒有人有一個想法如何追加上面的整個返回跨度,這也是在小部件中創建的... – mandava

回答

2

作爲每documentation

  • .data(name, value)是設定器:它附加valuename
  • .data(name)是吸氣劑:它返回附連到name

值在這種情況下,該值是一個對象(存儲有關綁定到該節點的自動完成實例的數據),並且該對象已就地修改。

它是jQuery庫的通用模式有一個功能觸發不同的動作取決於它的參數:

  • $(selector).click(myFunction)結合的處理程序的節點,$(selector).click()觸發click事件
  • 在jquery- UI,$sel.widget('option', name, value)通常會允許您在創建Widget後更改選項,$sel.widget('option', name)將允許您獲得值
  • etc ...
+0

啊當然,所以它返回自動完成功能,然後將自動完成的renderItem屬性更改爲函數提供...? – NimChimpsky

+0

yes:在其創建時,automcomplete小部件將創建一個配置對象,並使用'.data()'函數將其與節點一起存儲。然後您可以使用'autocomplete'鍵訪問它。 – LeGEC

相關問題