jQuery扩展类和函数问题

时间:2012-01-20 23:57:11

标签: jquery extend

我一直在四处寻找,但我无法找到明确的答案。所以我在现有的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 ...它做了。有什么想法吗?

1 个答案:

答案 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);
}