7

JQueryオートコンプリートは、ユーザーがそのオプションの1つにマウスを合わせるか、強調表示すると、フォーカスイベントをトリガーし<li>ます。このイベントで<li>は、現在注目されているものを参考にしたいと思いますが、選び方がわかりません。現在、私は次のことを行っています。

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

ただし、これにより<li>、現在フォーカスされているリストだけでなく、のリスト全体が返されます。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 に答える