This question was answered for the live() method, but the live() method has been deprecated as of jQuery 1.7 and replaced with the .on() method and this answer does not work for on().
Here's where it was answered before:
Bind jQuery UI autocomplete using .live()
Anyone know how to do the same thing with on()?
If you change the syntax to something like
$(document).on("keydown.autocomplete",[selector],function(){...});
from
$([selector]).live("keydown.autocomplete",function(){...});
It kind of works, but it interacts with the internal autocomplete events in a weird way. With live(), if you use the select event and access the event.target, it gives you the id of the input element. If you use on(), it gives you the id of the dropdown menu "ui-active-menuitem". Something like this:
$( ".selector" ).autocomplete({
select: function(event, ui) {
console.log(event.target.id);
}
});
But - if you use the "open" event, it will give you the id I'm looking for - just not at the right time (I need it after it is selected). At this point, I'm using a workaround of grabbing the ID of the input element in the open event function, storing it in a hidden field, then accessing it in the select method where I need it.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…