2012-03-15 11 views
5

Otrzymuję fragment kodu kotwicy html z serwera wywołania ajax. Jak mogę "odświeżyć", aby jQuery mobile mógł dołączać potrzebne klasy do linków?Jak ponownie renderować dynamicznie generowane znaczniki zakotwiczeń w jquery Mobile?

Na przykład link, który generuje jquery mobile ma UI-link:

<a class="ui-link" href="http://www.google.com">http://www.google.com</a> 

Jak mogę zapewnić poprawne style są dołączane na nowo generowanego tagu zakotwiczenia?

+0

Uruchomić funkcję jako część wywołania zwrotnego 'success' dla wywołania Ajax? –

+0

Czy możesz przesłać swój kod JS? Jakie widżety konkretnie próbujesz "odświeżyć"? – Jasper

Odpowiedz

1

Jeśli chcesz odświeżyć widżet, który został już zainicjowany następnie można odświeżyć każdy typ widgetu używając go za odpowiednią funkcję:

$('.ui-btn').button('refresh'); 

Zawiadomienie użyłem klasy .ui-btn wybrać tyłek na elementach ta klasa jest dodawana po zainicjowaniu przycisku, dzięki czemu możesz mieć pewność, że odświeżasz już zainicjowany widżet przycisku.

Docs: http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-methods.html

Jeśli trzeba zainicjować widżet, który musi jeszcze zostać zainicjowany, a następnie po prostu pominąć 'refresh' lub użyj .trigger('create'):

$('[data-role="button"], button, input[type="button"], input[type="submit"]').not('.ui-btn').button();//or .trigger('create'); 

Wskazówki Tutaj Pomijam już zainicjowany widgety przy użyciu .not('.ui-btn'), więc to tylko zainicjuje niezainicjalizowane widżety. Jeśli spróbujesz zainicjować widżet, który został już zainicjalizowany, pojawi się błąd (to samo, jeśli spróbujesz odświeżyć widżet, który nie został jeszcze zainicjowany).

Aktualizacja

Jeżeli HTML jest wysyłany przez serwer wtedy można zainicjować widżety przed dodaniem ich do DOM:

$.ajax({ 
    ... 
    success : function (serverResponse) { 
     var $out = $(serverResponse); 
     //if there is a container with elements inside it, use `.find()`, 
     //if all the elements are siblings at the top level then use `.filter()` 
     $out.find('a').button(); 
     $('body').append($out); 
    } 
}); 

Można również wykorzystać funkcję .buttonMarkup() zaktualizować widgety przycisku: http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-options.html

Powiązane problemy