如何更改jquery移动按钮文本

时间:2013-03-11 21:34:59

标签: jquery-mobile jquery-plugins jquery

jQuery mobile将在将elme增强为Widget后插入大量元素。

例如,在“a”被增强为按钮之后,“a”将插入两个跨度elem。 那么,如何在“a”增强为按钮后正确修改a的innerText?

1 个答案:

答案 0 :(得分:1)

第一种官方方法不存在,因此必须手动完成。

有两种常见方式:

经典解决方案:

    $(document).on('pagebeforeshow', '#index', function(){       
        $('#custom-btn span span').text('This is a new text');
    });

实例:http://jsfiddle.net/Gajotres/EjVfz/

这个解决方案预计随着未来的按钮实现不会改变,一切都将保持不变。

谨慎解决方案:

    $(document).on('pagebeforeshow', '#index', function(){       
        $('#custom-btn').find('.ui-btn-text').text('This is a new text');
    });

实例:http://jsfiddle.net/Gajotres/QHg3w/

此解决方案是一种安全的解决方案,无论使用哪个按钮示例(a,按钮,输入),按钮文本将始终位于 .ui-btn-text 类中。

编辑:

更改按钮插件

$(document).on('pagebeforeshow', '#index', function(){       
    $('#custom-btn').changeButtonText('This is a new text');
});

(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);

实例:http://jsfiddle.net/Gajotres/mwB22/

解决方案/插件位置:https://stackoverflow.com/a/7279843/1848600