2012-03-12 5 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.

Вот почему я предполагаю, что лучший способ написать этот код - расширить интерфейс, чтобы не просто переопределить его.

Мой вопрос в том, как применить этот же метод как расширение, а не переопределение?

+0

Вы не хотите, чтобы это было: 'вар originalCloseMethod = $ input.data ("autocomplete"). закрыть; ' – gdoron

+0

? Это то, что у меня есть, не так ли? – Trip

+0

Нет. Вы вызываете функцию «закрыть» и сохраняете ее возвращаемое значение, не сохраняя ссылку на него ... – gdoron

ответ

4

Вы называете тесную функцию и сохранить это возвращаемое значение, не сохраняя ссылку на него:

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

Изменить это:

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