Если я правильно понимаю ваш вопрос, вы хотите передать либо элемент автозаполнения, либо его индекс в doSearch()
, в дополнение к тексту элемента.
Передача элемента автозаполнения так же проста, как и использование closest () :
function doSearch(autocomplete, itemText)
{
// ...
}
$(".ui-autocomplete li a").live("click", function() {
var $this = $(this);
doSearch($this.closest(".ui-autocomplete"), $this.text());
});
Передача его индекса немного сложнее и может быть достигнута с помощью index () :
function doSearch(autocompleteIndex, itemText)
{
// ...
}
$(".ui-autocomplete li a").live("click", function() {
var $this = $(this);
doSearch($this.closest(".ui-autocomplete").index(".ui-autocomplete"),
$this.text());
});
Примечание впередавая, что bind()
, delegate()
и live()
были заменены на on () начиная с jQuery 1.7, так что вы можете использовать его для регистрации вашего обработчика:
$(document).on("click", ".ui-autocomplete li a", function() {
// ...
});
Если ваши элементы автозаполнения имеют общего нединамического предка, вы также можете применить on()
к этому элементу вместо document
, чтобы получить небольшую производительность.