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
}
});
Я попытался взглянуть на сам объект данных, но было так много вариантов, что я мог потратить весь день на это, но до сих пор не нахожу то, что ищу. Любая помощь или понимание очень ценятся.
Ответы
Ответ 1
Вы можете получить ссылку на виджете, посмотрев на набор данных, назначенный его корневому элементу (ввод). Тогда выбор свойства меню (и его элемента) является довольно тривиальным. )
select: function(event, ui) {
// that 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>
, когда эта функция называется обработчиком событий.
Ответ 2
Простейший способ сделать это:
$(this).autocomplete('widget');
Он делает то же самое, что:
select: function(event, ui) {
// that 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');