2012-04-23 22 views
6

Tengo una solicitud get que obtiene un montón de información de categoría para llenar un <select>. Estoy utilizando jQuery UI Selectmenu para dar estilo a mi selección.'actualizar' jquery UI menú de selección después de la actualización

Así que mi jQuery se ve un poco como esto:

//Initalise the selectmenu 
$("select").selectmenu({ style: 'dropdown' }); 

$.get("http://localhost/somedata?cat=2", function (data) { 
    $.each(data, function (index, itemData) { 
     $("<option value='" + itemData.Id + "'>" + itemData.Name + "</option>").appendTo("#selectList"); 
    }); 
}); 

Sin embargo, esto llena el <select> pero no actualiza el Seleccione Menú jQuery UI. ¿Alguna idea de lo que tengo que hacer para que el menú de selección sea 're-dibujado' para que los nuevos valores aparezcan en el menú de selección?

+0

esto me ayuda $ (document) .en ('cambio', "cuerpo", function() {$ (".ui-Seleccione Menú") .selectmenu(); }); –

+0

Tenga en cuenta que hay tres versiones de menú de selección con diferentes funcionalidades, API y documentación. ¿Qué versión usas? ¿Ejemplo de código? Consulte la wiki para obtener más información: https://github.com/fnagel/jquery-ui/wiki/Selectmenu – fnagel

Respuesta

0

Illinois recomienda el way..try ajax este

$(document).ready(function(){ 
    $.ajax({ 
        url :/somedata?cat=2,   

        success:function(data){ 
         $.each(data, function (index, itemData) { 
     $("<option value='" + itemData.Id + "'>" + itemData.Name + "</option>").appendTo("#selectList"); 
    }); 

        } 
       }); 
$("select").selectmenu({ style: 'dropdown' }); 
}); 
21

Puede utilizar el método refresh bien llamada, documentado en el development wiki:

$("select").selectmenu({ style: 'dropdown' }); 

$.get("http://localhost/somedata?cat=2", function(data) { 
    $.each(data, function(index, itemData) { 
     $("<option value='" + itemData.Id + "'>" + itemData.Name 
      + "</option>").appendTo("#selectList"); 
    }); 

    $("select").selectmenu("refresh"); 
}); 

Actualización: Por desgracia, la refresh la función está documentada, pero no parece que esté implementada todavía. Otra opción es destruir el widget y volver a crearla:

$("select").selectmenu("destroy").selectmenu({ style: "dropdown" }); 
+0

$ ("select"). Selectmenu ("refresh"); No parece tener ningún efecto, se llama pero no tiene efecto en el elemento jQuery UI. – CLiown

+0

Curiosamente $ ("seleccionar"). Selectmenu(); funciona bien – CLiown

+4

@CLiown, eso es desafortunado. Revisé los dos repositorios enumerados en la wiki, y el método 'refresh' aún no parece haberse implementado. Probablemente será cuando el widget esté disponible en el árbol principal. Por otro lado, la recreación del widget a través de una llamada a 'selectmenu()' puede no funcionar en el futuro, en ese caso es posible que desee destruir el widget de antemano, p. con '$ (" select "). selectmenu (" destroy "). selectmenu ({style:" dropdown "});'. –

Cuestiones relacionadas