Per la versione select2> = 4.0.0
Le altre soluzioni potrebbero non funzionare, tuttavia i seguenti esempi dovrebbero funzionare.
Soluzione 1: provoca l'attivazione di tutti gli eventi di modifica associati, incluso select2
$('select').val('1').trigger('change');
Soluzione 2: provoca l'attivazione dell'evento di modifica SOLO selezione2
$('select').val('1').trigger('change.select2');
Vedi questo jsfiddle per esempi di questi. Grazie a @minlare per la soluzione 2.
Spiegazione:
Di 'che ho un migliore amico che seleziona i nomi delle persone. Quindi Bob, Bill e John (in questo esempio suppongo che il valore sia lo stesso del nome). Per prima cosa inizializzo select2 sulla mia selezione:
$('#my-best-friend').select2();
Ora seleziono manualmente Bob nel browser. Successivamente Bob fa qualcosa di cattivo e non mi piace più. Quindi il sistema deseleziona Bob per me:
$('#my-best-friend').val('').trigger('change');
Oppure dire che faccio selezionare al sistema il successivo nell'elenco anziché Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Note sul sito Web Select 2 (consultare Metodi obsoleti e rimossi ) che potrebbero essere utili per gli altri:
.select2 ( 'val')
Il metodo "val" è stato deprecato e verrà rimosso in Select2 4.1. Il metodo obsoleto non include più il parametro triggerChange.
Dovresti invece chiamare direttamente .val sull'elemento sottostante. Se hai bisogno del secondo parametro (triggerChange), dovresti anche chiamare .trigger ("change") sull'elemento.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');