Как привязать автозаполнение пользовательского интерфейса jQuery с помощью .on()?

На этот вопрос был дан ответ для метода live(), но метод live() устарел с jQuery 1.7 и заменен методом .on(), и этот ответ не работает для on ().

Вот где на него уже был дан ответ: Связать автозаполнение пользовательского интерфейса jQuery с помощью .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);
 }
});

Но - если вы используете событие "открыть", оно даст вам искомый id - просто не в нужное время (он мне нужен после того, как он выбран). На данный момент я использую обходной путь, заключающийся в захвате идентификатора элемента ввода в функции открытия события, сохранении его в скрытом поле, а затем доступе к нему в методе выбора, где он мне нужен.

19
задан Community 23 May 2017 в 12:08
поделиться