Получить раскрывающуюся часть комбинированного списка автозаполнения jQuery

Я хотел бы получить элемент html, соответствующий списку автозаполнения, то есть раскрывающейся части, которая открывается при вводе в элемент ввода jQuery combobox. Как мне получить этот выпадающий элемент с помощью jQuery?


person Sunil    schedule 11.07.2012    source источник


Ответы (1)


Если вы говорите об автозаполнении jQueryUI, вы можете получить доступ к элементу menu, используя:

$('autocomplete_selector').data("autocomplete").menu.element;

Итак, в контексте события open вы можете сделать что-то вроде этого:

$("input").autocomplete({
    open: function (event, ui) {
        // menu is a jQuery object.
        var menu = $(this).data("autocomplete").menu.element;
    }
});

Пример: http://jsfiddle.net/PvgGw/


Для виджета combobox вам нужно перепрыгнуть через еще несколько обручей, поскольку input генерируется динамически:

$("combobox_selector")
    .data("combobox")
    .wrapper
    .find("input")
    .data("autocomplete")
    .menu
    .element;
person Andrew Whitaker    schedule 11.07.2012
comment
Будет ли это работать для jQuery combobox с id = 'abc': $ ('# abc'). ('. Ui-auto-complete)? - person Sunil; 11.07.2012
comment
Что вы имеете в виду под jQuery combobox? - person Andrew Whitaker; 11.07.2012
comment
@Andrews - поле со списком автозаполнения, доступное в jQuery-ui, как по этой ссылке: jqueryui.com/ demos / autocomplete / # option-source - person Sunil; 11.07.2012
comment
@Andrews - Я пробовал ваш подход, но он не работает: $ (# combobox123) .data (autocomplete) .menu.element всегда имеет значение null. Но если я попробую $ (# combobox123) .next (.ui-autocomplete), то получу ненулевой объект. Значит, в вашем выражении лица может быть что-то неправильное. - person Sunil; 11.07.2012
comment
Это потому, что ваш селектор выбирает элемент select, а не input, к которому подключаемый модуль автозаполнения прикреплен внизу. Пожалуйста, посмотрите мое обновление. - person Andrew Whitaker; 11.07.2012
comment
У меня все еще есть проблемы с вашим подходом. Мне нужно определить, имеет ли раскрывающийся список фокус, и когда я использую ваш селектор с .is (: focus), он всегда возвращает false. - person Sunil; 11.07.2012
comment
Чего именно вы пытаетесь достичь? Виджет автозаполнения имеет собственное focus событие, которое может пригодиться. Помогает ли вообще проверка видимости меню? - person Andrew Whitaker; 11.07.2012
comment
Я что-то делаю, если раскрывающееся меню автозаполнения не открывается, т.е. свернуто. Может быть, что-то другое, кроме фокуса, поможет, например, если он будет видимым или открытым. Спасибо - person Sunil; 11.07.2012