2012-01-20 21 views
2

私は周りを見回してきましたが、私の状況に明確な答えが見つかりません。だから、私は既存のjQueryプラグインを繰り返し実行していますjquery.autocompletejQueryクラスと関数の拡張問題

私は、変更する必要があるいくつかの事柄を持つjqueryオートコンプリートプラグインを持っています。

ステップ1:デフォルトを拡張する必要があります(これは動作します)

$.extend($.Autocompleter.defaults, customeDefaults); 

これは動作しますが、今私は、これらのデフォルトが置かなるだろうな機能を拡張したいです。私はそれが を動作しませんでした

$.extend($.Autocompleter.Select.init, myChanges); 

その後、私は

console.log($.Autocompleter.Select.init()); 
をしたこれを試みた私は、この

$.Autocompleter.Select = function() { 
    //a bunch of stuff in this class including: 
    function init() { 
     //this is the function that I need to extend. 
    } 
} 

のようなセットアップを持っているオートコンプリートで

:私のハングアップはこれを必要とします

これは、Selectにはメソッドinitがないというエラーが発生しました。何か案は?

+0

ここでは常に役立ちます。 – mowwwalker

答えて

2

現在のところ、$ .Autocompleter.Selectオブジェクトにバインドされていないため、init関数を拡張することはできません。これは、その内部の関数として宣言されたばかりです。関数がそのように定義されている場合

代わりに、あなたはそれを拡張することができます:

$.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); 
} 
+1

http://jquery.bassistance.de/autocomplete/jquery.autocomplete.jsこれは私が使用しているバージョンへのリンクです – Brodie

関連する問題