2015-11-26 13 views
10

Widziałem wiele przykładów tagów opcji Select2 ustawionych z atrybutami "data-" i chciałbym to zrobić.Dodawanie atrybutów "data-" z select2

Używam ajax do pobierania danych. Dostaję ID i TEXT potrzebne do zbudowania selekcji.

Ale jak mogę dodać więcej atrybutów do niego?

Po prostu nie znalazłem sposobu na ich dodanie.

$(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 
    } 
}); 
+0

Jeśli to możliwe po ty kod .. –

+0

właśnie zrobił –

Odpowiedz

26

To rozwiązanie dotyczy wersji Select2 4.0 lub nowszej.

Założenie, że atrybuty, o których mówisz, są załadowane do tablicy, z której powracasz w processResults. Na przykład, jeśli wybierasz rekord, taki jak ("id": 1, "tekst": "jakiś tekst", "custom_attribute": "hello world")

Następnie na imprezie zmiany możesz zrobić:

data=$("#selector").select2('data')[0]; 
console.log(data.custom_attribute);//displays hello world 

Nadzieja to pomaga ..

+1

Po prostu nie może bądź lepszy! Dzięki! –

+0

Jaki element celujesz za pomocą $ ("# selector")? Czy to powinno być menu rozwijane select2? Lub wybierz "opcję" z menu? Coś innego? –

+0

@AaronHill, musi to być rozwijane. Nie masz wielu opcji do wypróbowania. BTW. Dzięki Jeffrey. Nie mam pojęcia, jak to znalazłeś, ale tego właśnie szukałem ... – slick

0

Nie jestem pewien, co dokładnie pytasz, ale jeśli chcesz dodać dane atrybutów można zrobić tak ..

w jQuery:

$(element).attr('data-info', '222'); 

w JavaScript:

document.getElementById('elementId').setAttribute('data',"value: 'someValue'"); 
+1

Tak, co to jest dokładnie to, co chcę robić. Ale chcę to zrobić w Select2, ponieważ każdy tag 'option' będzie miał swój własny atrybut" data-coś ". –

+0

, więc chcesz dodać "atrybut danych" do wszystkich opcji. dobrze? –

+0

Tak! Powiedzmy, że chcę, aby wszystkie opcje miały atrybut "data-alias" –

Powiązane problemy