На этот вопрос был дан ответ для метода live(), но метод live() был устаревшим с jQuery 1.7 и заменен на метод .on(), и этот ответ не работает для on().
Здесь, где ему ответили раньше: Bind jQuery UI автозаполнения с использованием .live()
Кто-нибудь знает, как сделать то же самое с on()?
Если вы измените синтаксис на что-то вроде
$(document).on("keydown.autocomplete",[selector],function(){...});
из
$([selector]).live("keydown.autocomplete",function(){...});
Это работает, но он взаимодействует с внутренними событиями автозаполнения странным образом. С помощью live(), если вы используете событие select и получаете доступ к event.target, он дает вам идентификатор элемента ввода. Если вы используете on(), он дает вам идентификатор выпадающего меню "ui-active-menuitem". Что-то вроде этого:
$( ".selector" ).autocomplete({
select: function(event, ui) {
console.log(event.target.id);
}
});
Но - если вы используете "открытое" событие, оно даст вам идентификатор, который я ищу - просто не в нужное время (мне нужно его после его выбора). На этом этапе я использую обходное решение для захвата идентификатора входного элемента в функции открытого события, хранения его в скрытом поле, а затем доступа к нему в методе выбора, где он мне нужен.