我一直在四处寻找,但我无法找到明确的答案。所以我在现有的jQuery插件jquery.autocomplete
上进行迭代所以我有一个jquery自动完成插件,其中包含一些我需要更改的内容。
第1步:需要扩展默认值(这可行)
$.extend($.Autocompleter.defaults, customeDefaults);
这样可行,现在我想扩展这些默认值所在的函数。我的挂断涉及到:
自动填充中的我有这样的设置
$.Autocompleter.Select = function() {
//a bunch of stuff in this class including:
function init() {
//this is the function that I need to extend.
}
}
我试过这个
$.extend($.Autocompleter.Select.init, myChanges);
它不起作用 然后我做了一个
console.log($.Autocompleter.Select.init());
它产生了一个类型错误,说Select没有方法init ...它做了。有什么想法吗?
答案 0 :(得分:2)
当前设置的方式,你不能扩展init函数,因为它没有绑定到$ .Autocompleter.Select对象 - 它只是声明为它内部的一个函数。
相反,如果函数是这样定义的,你可以扩展它:
$.Autocompleter.Select = function() {
return {
this.init() {
//implementation
}
}
}
编辑:好的,在查看源代码后,实际上无法扩展init函数。您可以扩展调用init()的显示方法,让它首先执行您想要的操作,然后调用原始版本。该方法与this other question
的答案非常相似var old_display = $.Autocompleter.Select.display;
$.Autocompleter.Select.display = function(args) {
//whatever you need to do first
old_display.apply(this, args);
}