jQuery UI自动完成小部件 - 如何获取对菜单的引用?

时间:2012-12-21 10:37:45

标签: jquery-ui

我希望能够获得自动完成构建的菜单对象的引用(例如,我可以获得.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
  }
});

我试着查看数据对象本身,但是我有很多选择可以整天看着它而仍然找不到我正在寻找的东西。非常感谢任何帮助或见解。

2 个答案:

答案 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');