Jquery autocomplete-custom html pour la liste des résultats
donc la structure originale pour les résultats est
<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>
j'ai besoin de faire des liens à l'intérieur de ressembler à quelque chose comme ceci:
<a class="myclass" customattribute="something"> The item </a>
s'il vous Plaît ne me dites pas la seule solution pour modifier le plugin parce que je ne veux pas le même format pour tous les auto-complété sur le site.
3 réponses
Vous devez remplacer le _renderItem
méthode (pour la saisie semi-automatique dans la question):
$("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 );
};
(en supposant le items
dans votre source
ont une propriété appelée customattribute
)
Comme indiqué dans cet exemple: http://jqueryui.com/demos/autocomplete/#custom-data
Ceci est également documenté dans la documentation de jQuery-ui autocomplete à: Jquery-autocomplete.
Le truc, c'est:
- utilisez cette extension jquery:github
puis en autocomplete option pass
html:true ...autocomplete({ ... html:true ... }
);
Maintenant vous pouvez passer html (comme
sample) dans le champ "label" de la sortie JSON pour autocomplete.
Si vous ne connaissez pas comment ajouter le plugin à JQuery puis:
- Enregistrer le plugin (extension html de Scott González) dans un fichier js ou télécharger le fichier js.
- vous avez déjà ajouté le script jQuery-ui autocomplete dans votre page html(ou le fichier jquery-ui js). Ajoutez ce script de plugin après que le fichier javascript autocomplete.
Date de publication: 28 juillet 2013
Vous pourriez essayer d'ajouter les attributs de l'événement "open":
$( ".selector" ).autocomplete({
open: function(event, ui) {
var jArrEl = $("a.ui-corner-all");
jArrEl.addClass("myclass");
jArrEl.attr("customattribute","something");
}
});