2011-01-29 2 views
6

prima volta, quando mi caricamento della pagina, la mia casella di selezione è vuota:JQuery Mobile: come ri-renderizzare la casella di selezione?

<select name="secondaryTitle" id="secondaryTitle"></select> 

poi faccio chiamata ajax e ottenere i dati JSON per la casella di selezione di cui sopra.

arrtitle = objSecTitle.getAllSecondaryTitle(serviceId); // its an ajax call, that returns json object 
var obj = jQuery("#secondaryTitle"); 
removeAllOptions(obj); 
for(i=0;i<arrtitle.length;i++) 
{ 
    obj.options.length=obj.options.length + 1; 
    obj.options[obj.options.length - 1].text = arrtitle[i][1]; 
    obj.options[obj.options.length - 1].value = arrtitle[i][0]; 
} 
function removeAllOptions(selectbox){ 
    var i; 
    for(i=selectbox.options.length-1;i>=0;i--) 
    { 
     selectbox.remove(i); 
    } 
} 

La mia chiamata ajax è perfetta. Sopra il codice cambia anche gli elementi a discesa. Ma l'interfaccia utente non verrà aggiornata quando utilizziamo jQuery Mobile, poiché mostra/nasconde div differenti per il popup di selezione.

risposta

14

Non importa!

dovrei controllare la documentazione correttamente:

//refresh value   
$('#select').selectmenu('refresh'); 

//refresh and force rebuild 
$('#secondaryTitle').selectmenu('refresh', true); 
+0

OMG questo mi ha portato così a lungo per trovare! Ho provato tutto per giorni ora. Grazie! –

+1

dovresti usare meglio .trigger ('create') – TecHunter

0

Non chiedetemi perché, ma questo ha lavorato solo per me fino a quando ho usato le virgolette ->" < - per tutte le stringhe coinvolte in questa istruzione:

.

$ ("# secondaryTitle") Selezionare Menu ("refresh", true); // lavoro

ho avuto in questo modo:

$ ('# secondaryTitle') sel. ectmenu ('Aggiorna', true); // non funziona

e non funzionato: S: S: S