Мне кажется, вы должны переписать метод _renderItem
, чтобы иметь возможность настраивать визуализацию элементов.Код может быть примерно следующим:
$("#studentName").autocomplete({/* all your parameters*/})
.data("autocomplete")._renderItem = function (ul, item) {
var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<span class='ui-state-highlight'>$&</span>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<div>" + newText + "</div>")
.appendTo(ul);
};
В коде я использую jQuery UI CSS "ui-state-highlight" для подсветки.Вы можете использовать <strong>
вместо этого.Более того, я не включаю код, который будет экранировать любые символы RegEx
, которые могут быть внутри this.term
.Я хотел объяснить вам только основную идею.Посмотрите, например, ответ для получения дополнительной информации.
ОБНОВЛЕНО : В более поздних версиях пользовательского интерфейса jQuery вместо .data("autocomplete")
используется .data("ui-autocomplete")
.Чтобы ваш код работал в обеих (старых и новых) версиях jQuery, вы можете сделать что-то вроде следующего:
var $elem = $("#studentName").autocomplete({/* all your parameters*/}),
elemAutocomplete = $elem.data("ui-autocomplete") || $elem.data("autocomplete");
if (elemAutocomplete) {
elemAutocomplete._renderItem = function (ul, item) {
var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<span class='ui-state-highlight'>$&</span>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<div>" + newText + "</div>")
.appendTo(ul);
};
}
ОБНОВЛЕНО 2 : аналогично названию "item.autocomplete"
следует изменить на "ui-autocomplete-item"
.Смотрите здесь .