7

<li>当用户将鼠标悬停或以其他方式突出显示其选项之一时,JQuery 自动完成会触发焦点事件。在这个事件中,我想引用<li>当前关注的那个,但我不知道如何选择它。目前,我有:

focus: function( event, ui ) {
  var target = event.currentTarget
  alert($(target).html())
}

但这会返回整个<li>s 列表,而不仅仅是当前聚焦的列表。我尝试了其他事件方法,例如 event.delegateTarget 和 event.target,但没有成功。有没有另一种方法来获得焦点元素?

4

2 回答 2

8

你将不得不:

  1. 抓住自动完成正在使用的菜单小部件。
  2. 获取li当前关注的内容(这li有一个awith 类ui-state-focus

    focus: function (event, ui) {
        var menu = $(this).data("uiAutocomplete").menu.element,
        focused = menu.find("li:has(a.ui-state-focus)");
        // focused is the focused `li`
    }
    

示例:http: //jsfiddle.net/J5rVP/43/

于 2013-02-01T22:09:45.297 回答
1

改用以下方法有什么缺点吗?

focus: function(event, ui) {
    $(".ui-autocomplete li").removeClass("ui-state-hover");
    $(".ui-autocomplete").find("li:has(a.ui-state-focus)").addClass("ui-state-hover");
}
于 2013-03-02T09:25:20.017 回答