JQM:更改按钮文本(a href)

时间:2013-03-12 14:11:16

标签: jquery jquery-mobile

我遇到了一个似乎是一个简单问题的问题。我想以编程方式更改/更新按钮的按钮文本。然而,在看了几个不同的类似问题后,我仍然没有更接近。

我正在使用Chrome与jQuery 1.9和JQM 1.3 Final。

HTML (此块位于属于页脚的网格内)

<div class="ui-block-b">
    <div class="ui-bar ui-bar-e" style="height:40px"> 
       <a href="#" class="footerWishOption footerDeleteWish" data-role="button" data-icon="trash">Slett ønske</a>
    </div>
</div>

JS

changeButtonText是一个找到here的插件。

// 1. Does not work
$('.footerDeleteWish').changeButtonText("Gjenopprett
ønske"); 

// 2. Does not work                                                          
$('.footerDeleteWish .ui-btn-text').text("Gjenopprett ønske");
$('.footerDeleteWish').refresh();

// 3. Does not work
$('.footerDeleteWish').text("Gjenopprett ønske").refresh();

更新/解决方案:

如下面答案中的评论所述,问题在于页脚的可见性。即使页脚是在DOM中创建的,选择器也没有找到它,因为它被隐藏了。

1 个答案:

答案 0 :(得分:3)

有三种常见方式:

经典解决方案:

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