2012-04-23 13 views
6

Mam żądanie pobierania, które pobiera kilka informacji o kategorii, aby wypełnić <select>. Używam jQuery UI Selectmenu do stylu mojego wyboru."odśwież" menu jquery UI po aktualizacji

Więc mój jQuery wygląda trochę tak:

//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"); 
    }); 
}); 

Jednak ta zapełnia <select> ale nie aktualizuje selectmenu jQuery UI. Jakieś pomysły, co muszę zrobić, aby menu wyboru zostało ponownie narysowane, aby nowe wartości pojawiły się w menu wyboru?

+0

czy to mi pomoże $ (document) .Na ('zmiana', "ciało", function() { $ (".ui-selectmenu") .selectmenu(); }); –

+0

Uwaga: istnieje trzy wersja menu wyboru z różnymi funkcjami, interfejsem API i dokumentacją! Którą wersję używasz? Przykład kodu? Więcej informacji na wiki: https://github.com/fnagel/jquery-ui/wiki/Selectmenu – fnagel

Odpowiedz

0

Ill polecamy way..try ajax to

$(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

Można użyć trafnej nazwie refresh metody, udokumentowany w 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"); 
}); 

Aktualizacja: Niestety refresh funkcja jest udokumentowana, ale wydaje się, że nie została jeszcze zaimplementowana. Inną opcją jest zniszczenie widget i odtworzyć go:

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

$ ("select"). Selectmenu ("odśwież"); Wydaje się, że nie ma żadnego efektu, zostaje wywołany, ale nie ma wpływu na element interfejsu jQuery. – CLiown

+0

Dziwnie $ ("wybierz"). Selectmenu(); działa dobrze. – CLiown

+4

@CLiown, to niefortunne. Sprawdziłem oba repozytoria wymienione na wiki, a metoda 'refresh' nie wydaje się być jeszcze zaimplementowana. Prawdopodobnie stanie się, zanim ten widget stanie się dostępny w głównym drzewie. Z drugiej strony odtworzenie widżetu poprzez wywołanie funkcji 'selectmenu()' może nie działać w przyszłości, w takim przypadku możesz najpierw zniszczyć widżet, np. z '$ (" wybierz "). selectmenu (" destroy "). selectmenu ({styl:" rozwijany "});'. –

Powiązane problemy