Подтвердить что ты не робот

JQuery autocomplete - пользовательский html для списка результатов

Я имею в виду этот плагин: http://jqueryui.com/demos/autocomplete/

Итак, исходная структура результатов

<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all">
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 1</a>
  </li>
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 2</a>
  </li>
  <li class="ui-menu-item">
    <a class="ui-corner-all">item 3</a>
  </li>
</ul>

Мне нужно сделать ссылки внутри, чтобы выглядеть примерно так:

<a class="myclass" customattribute="something"> The item </a>

Пожалуйста, не говорите мне единственное решение для редактирования плагина, потому что я не хочу иметь одинаковый формат для всех автозаполнений на сайте.

4b9b3361

Ответ 1

Вам нужно заменить метод _renderItem (для рассматриваемого автозаполнения):

$("selector").autocomplete({ ... })
   .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a class='myclass' customattribute='" + item.customattribute + "'>" + item.label + "</a>" )
            .appendTo( ul );
   };

(при условии, что items в вашем source имеет свойство, называемое customattribute)

Как показано в этом примере: http://jqueryui.com/demos/autocomplete/#custom-data

Ответ 2

Это также задокументировано в документации по автозаполнению jquery-ui по адресу: Jquery-autocomplete.

Трюк:

  • Используйте это расширение jquery: код github
  • Затем в опции автозаполнения пройдите

    html:true
    
    ...autocomplete({
    ...
    html:true
    ...
    }
    

    );

  • Теперь вы можете передать html (например, <div> sample </div> ) в поле "label" вывода JSON для автозаполнения.

Если вы не знаете, как добавить плагин в JQuery, то:

  • Сохраните плагин (расширение html Scott González) в файле js или загрузите файл js.
  • Вы уже добавили автозаполнение jquery-ui script на странице html (или jquery-ui js file). Добавьте этот плагин script после этого файла автозаполнения javascript.

Дата публикации: 28 июля 2013 г.

Ответ 3

Вы можете попробовать добавить атрибуты с событием "open":

$( ".selector" ).autocomplete({
    open: function(event, ui) {
        var jArrEl = $("a.ui-corner-all");
        jArrEl.addClass("myclass");
        jArrEl.attr("customattribute","something");
    }
});