我希望能够获得自动完成构建的菜单对象的引用(例如,我可以获得.attr("id")
),但我对jQuery / javascript不是很熟悉。在源头,我发现了这个:
https://github.com/jquery/jquery-ui/blob/1-9-stable/ui/jquery.ui.autocomplete.js#L182
所以有一个物体飞来飞去,我似乎无法找到如何抓住它。
所以,例如,如果我有一个带有自动完成的输入,就像这样:
// input = reference to the input text box on the form
input.autocomplete({
select: function(event, ui) {
// how to get the reference here?
// some things I've tried
// return input.menu
// return input.data("menu")
// and a few others but they didn't work either
}
});
我试着查看数据对象本身,但是我有很多选择可以整天看着它而仍然找不到我正在寻找的东西。非常感谢任何帮助或见解。
答案 0 :(得分:17)
您可以通过查看分配给其根元素(输入)的数据集来获取小部件的引用。然后获取菜单属性(及其底层元素)有点琐碎。 )
select: function(event, ui) {
// that's how get the menu reference:
var widget = $(this).data('ui-autocomplete'),
menu = widget.menu,
$ul = menu.element,
id = $ul.attr('id'); // or $ul[0].id
}
... this
函数中的select
在此函数被称为事件处理程序时引用<input>
。
答案 1 :(得分:5)
更简单的方法:
$(this).autocomplete('widget');
它与:
select: function(event, ui) {
// that's how get the menu reference:
var widget = $(this).data('ui-autocomplete'),
menu = widget.menu,
$ul = menu.element,
id = $ul.attr('id'); // or $ul[0].id
}
它给出了ul列表
$(this).autocomplete('widget').attr('id');