Dla wersji select2> = 4.0.0
Inne rozwiązania mogą nie działać, jednak poniższe przykłady powinny działać.
Rozwiązanie 1: Powoduje wyzwolenie wszystkich dołączonych zdarzeń zmiany, w tym select2
$('select').val('1').trigger('change');
Rozwiązanie 2: Powoduje wyzwolenie zdarzenia zmiany JUST select2
$('select').val('1').trigger('change.select2');
Zobacz tego jsfiddle dla przykładów. Dzięki @minlare dla Solution 2.
Wyjaśnienie:
Powiedzmy, że mam najlepszego przyjaciela z nazwiskami osób. Więc Bob, Bill i John (w tym przykładzie zakładam, że wartość jest taka sama jak nazwa). Najpierw inicjuję select2 w moim select:
$('#my-best-friend').select2();
Teraz ręcznie wybieram Boba w przeglądarce. Następnie Bob robi coś niegrzecznego i już go nie lubię. Dlatego system odznacza dla mnie Boba:
$('#my-best-friend').val('').trigger('change');
Lub powiedz, że każę systemowi wybrać następny z listy zamiast Boba:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Uwagi na temat witryny Select 2 (patrz Przestarzałe i usunięte metody ), które mogą być przydatne dla innych:
.select2 („val”)
Metoda „val” została uznana za przestarzałą i zostanie usunięta w Select2 4.1. Przestarzała metoda nie zawiera już parametru triggerChange.
Zamiast tego powinieneś bezpośrednio wywołać .val na podstawowym elemencie. Jeśli potrzebujesz drugiego parametru (triggerChange), powinieneś także wywołać .trigger („zmiana”) na elemencie.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');