我可以访问这个_normalize方法吗?

时间:2011-06-26 00:06:43

标签: javascript jquery jquery-ui

如果我们查看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也是如此,我觉得这很奇怪,因为看起来他们正在那里扩展它......

1 个答案:

答案 0 :(得分:2)

尝试$.ui.autocomplete.prototype访问这些成员