Сделайте myFunction сразу после запроса JSONP - PullRequest
0 голосов
/ 31 января 2012

У меня есть скрипт, который позволяет отображать предложения Google: JsFiddle

Я хочу сделать функцию с первым элементом li, отображаемым автозаполнением пользовательского интерфейса, поэтому я сделал это:

$("input#term").keyup(function() {
    DoMyFunction($('.ui-autocomplete li:first-child a').text(), true);
}); 

Проблема, однако, заключается в том, что существует промежуток времени между keyup ---> request ---> xml cache и рендерингом html при автозаполнении пользовательского интерфейса.Это означает, что моя функция (DoMyFunction) запускается, когда нет списка HTML, следовательно, она не работает.Поэтому мой вопрос: как мне выполнить свою функцию сразу после того, как запрос кеширован и обработан.Установка таймера не будет работать, потому что есть много переменных для учета (например, пропускная способность пользователя).

1 Ответ

1 голос
/ 31 января 2012

В соответствии с jQuery UI docs , есть событие open, которое запускается при открытии меню подсказок

Вам нужно будет сделать что-то вроде этого:

$("#term").autocomplete({

  source: function( request, response ) {
    // ajax function
  },
    select: function(e, ui){
        //
    }
   open : function(){
        //here you are sure the suggestion menu is opened
        DoMyFunction($('.ui-autocomplete li:first-child a').text(), true);
   }
 });
...