更改按鈕文本jquery mobile



4 Answers

<a data-role="button" href="#" id="consumed">Mark Old</a>

你想要:

$('#consumed').text('Mark New');
$('#consumed').button('refresh');

原因是使您的更改能夠與未來版本的jQuery mobile向後兼容。

Question

我正在使用新的jquery mobile 1.0 alpha 1版本來構建移動應用程序,我需要能夠切換按鈕的文本。 切換文本工作正常,但只要執行文本替換,css格式就會被破壞。

混亂格式的屏幕截圖: http://awesomescreenshot.com/03e2r50d2http://awesomescreenshot.com/03e2r50d2

    <div class="ui-bar">
        <a data-role="button" href="#" onclick="Podcast.play(); return false" id="play">Play</a>
        <a data-role="button" href="#" onclick="Podcast.download(); return false" id="download">Download</a>
        <a data-role="button" href="#" onclick="Podcast.consumed(); return false" id="consumed">Mark Old</a>
    </div>

$("#consumed").text("Mark New");



出於某種原因,我第一次想要更改按鈕文本時沒有“ui-btn-text”分類。 所以我像這樣解決它:

var button = $("#consumed");
var innerTextSpan = button.find(".ui-btn-text");

// not initialized - just change label
if (innerTextSpan.size() == 0) {
    button.text(label);

// already initialized - find innerTextSpan and change its label    
} else {
    innerTextSpan.text(label);
}



我為一個基於鏈接的按鈕或一個<input type="button">按鈕編寫了一個簡單的插件來執行此操作。 所以,如果你有

<input type="button" id="start-button" val="Start"/>

要么

<a href="#" data-role="button" id="start-button">Start</a>

無論哪種方式,您都可以使用更改顯示的文本

$("#start-button").changeButtonText("Stop");

這是插件:

(function($) {
    /*
     * Changes the displayed text for a jquery mobile button.
     * Encapsulates the idiosyncracies of how jquery re-arranges the DOM
     * to display a button for either an <a> link or <input type="button">
     */
    $.fn.changeButtonText = function(newText) {
        return this.each(function() {
            $this = $(this);
            if( $this.is('a') ) {
                $('span.ui-btn-text',$this).text(newText);
                return;
            }
            if( $this.is('input') ) {
                $this.val(newText);
                // go up the tree
                var ctx = $this.closest('.ui-btn');
                $('span.ui-btn-text',ctx).text(newText);
                return;
            }
        });
    };
})(jQuery);

...因為你的代碼依賴於jQuery Mobile如何呈現這些按鈕的依賴性並不是一個好主意。 編程規則:如果你必須使用hack,將它隔離到一個記錄良好,可重複使用的代碼塊。




像標記一樣

<button id="consumed">Mark Old</button>

$("#consumed").html("Mark New");
$("span > span", $("#consumed").parent()).html("Mark New");



從JQM 1.3.1開始(可能更早?),似乎支持簡單的.text()。






Related