J'ai vu beaucoup d'exemples de balises d'options Select2
définies avec des attributs "data" et j'aimerais le faire.
J'utilise ajax pour obtenir les données. Je reçois la ID
et la TEXT
nécessaires à la construction de la sélection.
Mais comment puis-je ajouter plus d'attributs?
Je n'ai tout simplement pas trouvé le moyen de les ajouter.
$(element).select2({
placeholder: 'Select one...',
width: '100%',
minimumInputLength: 2,
ajax: {
url: '/my/url',
dataType: 'json',
data: function(params) {
return {
q: params.term,
page: params.page
};
},
processResults: function(data, page) {
console.log(data);
return {
results: data
};
},
cache: true
}
});
Cette solution s’applique à Select2 versions 4.0 ou supérieures.
En supposant que les attributs dont vous parlez sont chargés dans le tableau que vous renvoyez dans processResults. Par exemple, si vous sélectionnez un enregistrement tel que ('id': 1, 'text': 'some-text', 'custom_attribute': 'hello world')
Ensuite, lors d’un événement de changement, vous pouvez faire:
data=$("#selector").select2('data')[0];
console.log(data.custom_attribute);//displays hello world
J'espère que ça aide..
Je ne sais pas exactement ce que vous demandez, mais si vous voulez ajouter un attribut de données, vous pouvez le faire comme ceci.
Dans Jquery:
$(element).attr('data-info', '222');
En javascript:
document.getElementById('elementId').setAttribute('data',"value: 'someValue'");