0

我正在使用 Jquery 自动完成功能,并且创建了一个自定义焦点方法。目标是在元素聚焦时呈现附加信息,然后在模糊时将元素返回到其默认状态。因为自动完成没有模糊方法,所以我使用 mouseleave 将我自己的方法组合在一起:

focus: function( event, ui ) {
  event.preventDefault();
  var menu = $(this).data("uiAutocomplete").menu.element;
  var focused = menu.find("li:has(a.ui-state-focus)");
  var child = $(focused).children().first();
  var item = ui.item.value;
  var text = "<div>" + item.name + "</div>";
  if (item.publications.length > 0) text += "<div>" + item.publications + "</div>";
  $(child).html(text).attr("name", item.name);
  $(focused).on("mouseleave", function() {
    $(child).html($(child).attr("name"))
  });
},

虽然这适用于鼠标悬停,但当用户使用键盘上下导航列表时它不起作用。为此,我需要使用诸如 focusout 之类的东西:

$(focused).on("focusout", function() {
  $(child).html($(child).attr("name"))
});

不幸的是,无论哪种方式,focusout 都没有明显的效果。没有错误消息,也没有更改的文本——甚至在鼠标悬停时也没有。知道发生了什么吗?

4

1 回答 1

0

赋予li(that )具有某些值:has(a.ui-state-focus)的属性。tabindex例如<li tabindex="0"><a[...]</li>

LE:tabindex使focushtml 元素成为可能。所以他们可以触发focusout模糊。

于 2013-02-14T15:46:19.907 回答