我正在使用jQuery v1.8.3和jQuery UI v1.9.2。我想通过添加和覆盖一些选项和方法来扩展现有的jQuery UI小部件(在我的情况下是Autocomplete小部件),但保留其他功能,如官方版本中所存在的功能。如何以“正确”(也许是“标准”)的方式实现?
P.S.: 我在网上搜索(1,2,...)并找到的文档大多与创建新的jQuery UI小部件相关,而不是扩展现有小部件。
P.S.: 我在网上搜索(1,2,...)并找到的文档大多与创建新的jQuery UI小部件相关,而不是扩展现有小部件。
$.widget()
)支持以下几种方案:$.Widget
)作为起点创建一个新小部件:
$.widget("ns.widget", { ... })
创建从现有小部件继承的新小部件:
$.widget("ns.widget", $.ns.existingWidget, { ... })
扩展小部件:
$.widget("ns.widget", $.ns.widget, { ... })
您会注意到,扩展语法和继承语法是相同的。小部件工厂足够聪明,能够注意到您正在创建的小部件和你想要继承的小部件是相同的,并做出适当的处理。delay
选项为500
并添加一个新选项prefix
,该选项将添加到所有建议中:$.widget( "ui.autocomplete", $.ui.autocomplete, {
options: {
delay: 500,
prefix: ""
},
_renderItem: function( ul, item ) {
var label = item.label;
if ( this.options.prefix ) {
label = this.options.prefix + " " + label;
}
return $( "<li>" )
.append( $( "<a>" ).text( label ) )
.appendTo( ul );
},
});