【发布时间】:2012-03-13 23:27:08
【问题描述】:
这个问题是针对 live() 方法回答的,但是 live() 方法在 jQuery 1.7 中已经被弃用并被 .on() 方法取代,这个答案对 on() 不起作用。
这是之前回答的地方: Bind jQuery UI autocomplete using .live()
有人知道如何用 on() 做 同样的事情吗?
如果您将语法更改为类似
$(document).on("keydown.autocomplete",[selector],function(){...});
来自
$([selector]).live("keydown.autocomplete",function(){...});
它有点工作,但它以一种奇怪的方式与内部自动完成事件交互。使用 live(),如果您使用 select 事件并访问 event.target,它会为您提供输入元素的 id。如果您使用 on(),它会为您提供下拉菜单“ui-active-menuitem”的 ID。像这样的:
$( ".selector" ).autocomplete({
select: function(event, ui) {
console.log(event.target.id);
}
});
但是 - 如果你使用“open”事件,它会给你我正在寻找的 id - 只是不是在正确的时间(我在选择它之后需要它)。此时,我正在使用一种解决方法,即在打开事件函数中获取输入元素的 ID,将其存储在隐藏字段中,然后在需要的选择方法中访问它。
【问题讨论】:
-
从较大的应用程序中提取代码需要一些时间,但我可以尝试。为了提供更多上下文,我有一个带有输入字段的表单,上面运行了自动完成功能。我需要使用 live/on 功能来允许通过单击添加按钮动态添加其他输入字段,并在它们上运行相同的自动完成功能。
标签: jquery jquery-ui-autocomplete