web-dev-qa-db-fra.com

Ajout d'attributs "data" avec select2

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
     }
 });
13
Victor Leal

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..

32

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'");
0
Anand Singh