【问题标题】:monkey patching one jquery ui autocomplete render item猴子修补一个 jquery ui 自动完成渲染项
【发布时间】:2012-10-28 14:18:16
【问题描述】:
$("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

.data( "autocomplete" ) 这个位在做什么,尽管数据被用来将键值对附加到 dom 元素作为data-foo 属性的一部分。但这似乎不是这里的情况?

【问题讨论】:

  • 有谁知道如何将上面的整个返回附加到同样在小部件中创建的 span...

标签: javascript jquery jquery-ui monkeypatching


【解决方案1】:

根据documentation

  • .data(name, value) 是 setter :它将 value 附加到 name
  • .data(name) 是 getter :它返回附加到 name 键的值

在这种情况下,值是一个对象(它存储有关绑定到节点的自动完成实例的数据),并且该对象被原地修改。

jQuery 库中的一种常见模式是让函数根据其参数触发不同的操作:

  • $(selector).click(myFunction) 将处理程序绑定到节点,$(selector).click() 触发 click 事件
  • 在 jquery-ui 中,$sel.widget('option', name, value) 通常允许您在创建小部件后更改选项,$sel.widget('option', name ) 将允许您获取值
  • 等等...

【讨论】:

  • 啊当然,所以它返回自动完成函数,然后将自动完成的renderItem属性更改为提供的函数...?
  • yes :在创建时,自动完成小部件创建一个配置对象,并使用.data() 函数将其与节点一起存储。然后您可以使用autocomplete 键访问它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2012-11-25
  • 1970-01-01
  • 2012-03-13
  • 2013-12-26
  • 2012-06-14
  • 2012-03-29
相关资源
最近更新 更多