我想實現jQuery自動完成框併成功集成到我的項目。在這裏,我將jquery Autocomplete框的源代碼作爲列表元素。突出顯示查詢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中給出的。
我的嘗試如下,我試圖用用戶輸入的查詢替換span標記文本。我怎麼能在我的情況下實現這一點。
$(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。只是想添加高亮查詢功能。
你的意思是像[this](https://jsfiddle.net/julmot/bs69vcqL/) - 使用[mark.js](https://markjs.io/)? – dude