私はjQueryオートコンプリートボックスを実装しようとしていて、私のプロジェクトにうまく統合されています。ここでは、jqueryオートコンプリートボックスのソースをリスト要素として与えています。jQueryのハイライトクエリダイナミックなリストソースのためのオートコンプリート
var _array = ['<li height="45px" class="ui-menu-item ui_dropdown_item" role="presentation"><a id="ui-id-302" class="ui-corner-all ui_dropdown_focus" tabindex="-1"><img class="apps-share-chips-profile-icon" src="build/assets/apple.png" onerror="helper.onImageError(this);"><span search="text">[email protected]</span></a></li>',
'<li height="45px" class="ui-menu-item ui_dropdown_item" role="presentation"><a id="ui-id-302" class="ui-corner-all ui_dropdown_focus" tabindex="-1"><img class="apps-share-chips-profile-icon" src="build/assets/ms.png" onerror="helper.onImageError(this);"><span search="text">[email protected]</span></a></li>'];
ご覧のとおり、li要素をソースとして与え、jQueryで以下のようにバインドします。
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
return $(item.label).appendTo(ul);
};
機能が完了しました。ここで達成しようとしているのは、SO linkのように、ユーザーが入力したクエリを強調表示することです。
私の試行は以下の通りですが、私はスパンタグのテキストをユーザが入力したクエリに置き換えようとしています。私はどのように私のシナリオでこれを達成することができます。
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
$(item.label).find('span').replace(new RegExp('(?![^&;]+;)(?!<[^<>]*)(' + $.ui.autocomplete.escapeRegex(this.term) + ')(?![^<>]*>)(?![^&;]+;)', 'gi'), '<span style="font-weight:bold;color:Blue;">$1</span>');
return $(item.label).appendTo(ul);
};
しかし、私は達成できず、私の解決策で何がうまくいかないのか分かりません。回答は高く評価されます。
編集:私はjsfiddle linkを追加しました。ハイライトクエリ機能を追加したいだけです。
[mark.js](https://markjs.io/)を使って[this](https://jsfiddle.net/julmot/bs69vcqL/)のようなものを意味しますか? – dude