如果我们查看jquery.ui.autocomplete
的来源,他们就会得到这个:
$.widget( "ui.autocomplete", {
// *snip*
_normalize: function( items ) {
// assume all items have the right format when the first item is complete
if ( items.length && items[0].label && items[0].value ) {
return items;
}
return $.map( items, function(item) {
if ( typeof item === "string" ) {
return {
label: item,
value: item
};
}
return $.extend({
label: item.label || item.value,
value: item.value || item.label
}, item );
});
},
// *snip*
});
$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
},
filter: function(array, term) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
return $.grep( array, function(value) {
return matcher.test( value.label || value.value || value );
});
}
});
我可以使用自己的项目调用_normalize
方法吗?
我不确定这一切是如何在内部组合在一起的。我正在尝试$.ui.autocomplete._normalize
之类的东西,但似乎未定义。 $.ui.autocomplete.escapeRegex
也是如此,我觉得这很奇怪,因为看起来他们正在那里扩展它......
答案 0 :(得分:2)
尝试$.ui.autocomplete.prototype
访问这些成员