Nieważne; Właśnie znalazłem to w górnej części dokumentacji:
Note: Links styled like buttons have all the same visual options as true form-based buttons below, but there are a few important differences. Link-based buttons aren't part of the button plugin and only just use the underlying buttonMarkup plugin to generate the button styles so the form button methods (enable, disable, refresh) aren't supported. If you need to disable a link-based button (or any element), it's possible to apply the disabled class ui-disabled yourself with JavaScript to achieve the same effect.
Chociaż właściwie nie rozwiązać mój problem (w jaki sposób zaktualizować tekst przycisku) - przynajmniej odpowiedzi dlaczego „odświeżyć” metoda nie jest obsługiwana .
Edit:
Zdaję sobie sprawę, że mogę bezpośrednio aktualizacja tekst na przycisku; Powiedziałem tak samo w pytaniu oryginalnym:
I know that I can work around this problem by manipulating the .ui-btn-text span that's nested inside the button; however, this seems like the wrong approach as it requires explicit knowledge of the internal workings of jquery Mobile.
Miałem nadzieję, że uda mi się uniknąć tego rozwiązania, dzięki czemu metoda "odświeżania" działa. Jednak na podstawie fragmentu dokumentacji, który później znalazłem (i zacytowałem powyżej), zdałem sobie sprawę, że używanie metody "odświeżania" nie było możliwe.
Biorąc to pod uwagę; Nadal miałem nadzieję, że istnieje inny sposób aktualizowania tekstu na przycisku bez wyraźnego adresowania wygenerowanych elementów DOM (tj. Za pomocą interfejsu API jQM) - ale o ile widzę, nie ma na to metody interfejsu API. Aktualizacja elementów DOM wydaje się jedynym sposobem na osiągnięcie pożądanego rezultatu.
Oba selektory dostarczone przez @Phil Pafford ($(this).find('span span')
) i @ OmarNew2PHP ($button.children().children()
) są (moim zdaniem) niepoprawne.Tak, oni doskonale pracować w podanym wyżej przykładzie, jeśli jednak dodać ikonę do przycisku:
<a id="myCrapButton" href="#" data-icon="delete">Click me!</a>
Następnie jQM dodaje się dodatkową span
do wyświetlenia tej ikony (atrybuty tagu zakotwiczenia przycięte dla zwięzłość):
<a href="#">
<span class="ui-btn-inner">
<span class="ui-btn-text">Delete</span>
<span class="ui-icon ui-icon-delete ui-icon-shadow"> </span>
</span>
</a>
Używanie selektorów powyżej doda tekst do zarówno wewnętrznych span
tagów. Jest to kolejny przykład, dlaczego miałem nadzieję uniknąć bezpośredniego aktualizowania DOM - ponieważ nie można (i nie trzeba) przewidywać, co jQM będzie generować.
Ale pod koniec dnia, to wygląda na to najlepszy sposób aktualizacji tekstu wewnątrz przycisku jest przy użyciu metody Miałem nadzieję uniknąć:
$button.click(function() {
$(".ui-btn-text", this).text("Awesome Button");
});
Dzięki za odpowiedzi.
Czy wypróbowałeś '$ (" [data-role = 'button'] # buttonID ") on (" click ", function() {// code here});' – Omar
@ OmarNew2PHP: Using "on" i "kliknij" w tym scenariuszu robi dokładnie to samo (zobacz [dokumentacja dla kliknięcia] (http://api.jquery.com/click/)) - "Ta metoda jest skrótem dla' .on ("kliknij" , handler) '". – gerrod