14

オートコンプリートが構築するメニュー オブジェクトへの参照を取得できるようにしたいのですが (.attr("id")たとえば取得できるように)、jQuery/javascript にあまり詳しくありません。ソースで、私はこれを見つけました:

https://github.com/jquery/jquery-ui/blob/1-9-stable/ui/jquery.ui.autocomplete.js#L182

物体が飛び回っていますが、それをつかむ方法が見つからないようです。

たとえば、次のようにオートコンプリートがバインドされた入力があるとします。

// input = reference to the input text box on the form
input.autocomplete({
  select: function(event, ui) {
    // how to get the reference here?

    // some things I've tried
    // return input.menu
    // return input.data("menu")
    // and a few others but they didn't work either
  }
});

データ オブジェクト自体を調べてみましたが、探しているものを見つけることができず、1 日中見ていられないほど多くのオプションがありました。

4

2 に答える 2

18

ルート要素 (入力) に割り当てられたデータセットを調べることで、ウィジェットの参照を取得できます。次に、メニュー プロパティ (およびその基になる要素) を取得するのは簡単です。)

  select: function(event, ui) {
    // that's how get the menu reference:
    var widget = $(this).data('ui-autocomplete'),
        menu   = widget.menu,
        $ul    = menu.element,
        id     = $ul.attr('id'); // or $ul[0].id
  }

... as thiswithin function は、この関数がイベント ハンドラーとして呼び出されたときselectを指します。<input>

于 2012-12-21T10:42:25.960 に答える
5

これを行うためのより簡単な方法: 次 $(this).autocomplete('widget');
と同じことを行います:

select: function(event, ui) {
// that's how get the menu reference:
var widget = $(this).data('ui-autocomplete'),
    menu   = widget.menu,
    $ul    = menu.element,
    id     = $ul.attr('id'); // or $ul[0].id

}

それはulリストを与える

$(this).autocomplete('widget').attr('id');

于 2015-01-09T13:23:49.420 に答える