2013-02-22 81 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

    相关问题