mouseleave有效,但没有焦点

时间:2013-02-14 15:34:09

标签: jquery focus mouseevent

我正在使用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"))
  });
},

虽然这适用于鼠标滚动,但当用户使用键盘在列表中上下导航时,它不起作用。要做到这一点,我需要使用像焦点一样的东西:

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

不幸的是,焦点没有明显的效果,无论如何。没有错误消息,也没有更改的文本 - 甚至没有鼠标悬停。知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

li :has(a.ui-state-focus)个属性tabindex提供一些值。例如。 <li tabindex="0"><a[...]</li>

L.E。:tabindex使focus个html元素成为可能。因此,他们可以在模糊时触发focusout