2012-03-12 6 views
1

jquery UIメソッドをオーバーライドして閉じます。このようにして、私は確立する変数selectedに基づいてそれを閉じることができます。jquery ui autocompleteを正しくオーバーライドする方法は?

var originalCloseMethod = $input.data("autocomplete").close(); 
$input.data("autocomplete").close = function(event) { 
    if (!selected){ 
    originalCloseMethod.apply(this, arguments); 
    } 
    selected = false; 
}; 

それは定期的に近づける必要があるときのために除き、素晴らしいに動作します。たとえば、オートコンプリートdivの外側をクリックしたとします。 APIを閉じ、リターンこのために呼び出します。

originalCloseMethod私はそれがUI内で内部的にこのメソッドを呼び出していることを実現します

定義されていません。

これは、私がこのコードを書く最良の方法は、UIを拡張することだけでなく、オーバーライドすることを前提としている理由です。

私の質問は、オーバーライドではなく、同じ方法をエクステンションとしてどのように適用するのですか?

+0

あなたはそれになりたいと思いませんでしたoriginalCloseMethod = $ input.data( "autocomplete")。close; ' – gdoron

+0

?それは私が持っているものではないですか? – Trip

+0

いいえ、あなたは 'close'関数を呼び出し、戻り値を保存します。参照を保存しません... – gdoron

答えて

4

あなたはclose関数を呼び出すと、それはそれへの参照を保存しない、返り値です救う:

var originalCloseMethod = $input.data("autocomplete").close(); 

に変更し、それを: `VAR:

var originalCloseMethod = $input.data("autocomplete").close; 
関連する問題