14

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

我尝试查看数据对象本身,但是有很多选项我可以花一整天时间查看它,但仍然找不到我要查找的内容。

4

2 回答 2

18

您可以通过查看分配给其根元素(输入)的数据集来获取小部件的参考。然后获取菜单属性(及其底层元素)有点简单。)

  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
  }

... as thiswithin selectfunction 指的是<input>当这个函数作为事件处理程序调用时。

于 2012-12-21T10:42:25.960 回答
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');

于 2015-01-09T13:23:49.420 回答