4

jQuery オートコンプリートに問題があります。2種類のアイテムを表示するようにカスタマイズしています:

  • 検索文字列への実際の一致と
  • 提案 (スペル修正、関連キーワードなど)

バックエンドはそれに関するすべての作業を行います。オートコンプリートには 2 つのリストが与えられます。

写真はよりよく説明できます:

http://shot.ninjaloot.se/20120412.141112.png (データは開発時のダミーデータで、スタイリングは未完成です)

レンダリングが機能している間、アイテムの選択 (クリックまたはその他の方法) は、デバッグが困難な例外をスローします。

TypeError: 'undefined' is not an object (evaluating 'ui.item.data')

私が理解しているように、menu.selected 関数にはui未定義のitemキーを持つ引数が与えられます。

なぜこれが起こるのですか?どうすればよいですか? カスタム レンダラーをコメント アウトすると、選択が機能します。

これは私のカスタム レンダラー関数です。これは、UI ソース ファイル内のものから逐語的に持ち上げられ、その後、私のカスタム ハクシングを実行するために拡張されました。

$input.data("autocomplete")._renderItem = function(ul, item) {
    var cls = 'ui-menu-item';

    if(item.label === null) {
        cls += ' center disabled';
        item.label = '-- perhaps thou meaneth --';
    }

    return $("<li></li>")
     .data("item.autocomplete", item)
     .append("<a class='ui-corner-all'>" + item.label + "</a>")
     .addClass(cls)
     .appendTo(ul);
};

さらにコードが必要な場合は、喜んで提供します。

4

1 に答える 1

1

自己回答!私はこれを自分で修正することができました。明らかに、クラス「ui-menu-item」を手動で追加すると、メニュー項目は完了したと見なされ、後処理は行われません。後処理は機能にとって不可欠です。クラスを手動で追加しなくても機能します。

于 2013-01-02T07:19:22.940 に答える