更新内容时,JQuery Mobile会丢失格式

时间:2011-10-26 14:31:02

标签: javascript jquery jquery-mobile

首先,我调用getJSON来下拉相应的数据。然后,我使用以下代码更新已存在的<a href=""></a>元素。

$.getJSON("http://URL.com?unitnumber="+query+"", function(data) {
    var encounter = $('#encounter');
    $.each(data, function(i) {
        if(i==0){
            $('#date1').text(""+data[i].DateDisp+"").trigger('create');
        }
     });
});

初始<a>元素格式正确:

enter image description here

但是一旦我更新了该链接元素(其ID为#date1)内的文本,我就会丢失格式。尽管尝试使用.trigger('create')......

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery Mobile添加到按钮(<a>标记)的结构,并仅替换按钮文本。下面是jQuery Mobile设置样式后按钮的示例:

<a data-role="button" data-theme="c" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c">
    <span aria-hidden="true" class="ui-btn-inner ui-btn-corner-all">
        <span class="ui-btn-text">Updated Text (6)</span>
    </span>
</a>

注意:按钮的上述HTML结构适用于jQuery Mobile 1.0RC2。

请注意<span>ui-btn-text。您想要做的是定位此<span>并更改其文本,如果您尝试更改整个<a>标记的文本,您将丢失用于设置按钮样式的内部<span>标记。

所以你的选择器应该是这样的:

$('#date1').find('.ui-btn-text').text(...);

您不必使用.trigger('create'),因为样式不会丢失。

以上是上述解决方案的一个方面:http://jsfiddle.net/jasper/4DAfn/3/

此外,如果您正在迭代返回的JSON数据并仅使用第一行信息,请考虑替换以下内容:

$.each(data, function(i) {
    if(i==0){
        $('#date1').text(""+data[i].DateDisp+"").trigger('create');
    }
});

使用:

$('#date1').text(""+data[0].DateDisp+"").trigger('create');

或者你可以在if语句中return false;(这将打破$.each()循环):

$.each(data, function(i) {
    if(i==0){
        $('#date1').text(""+data[i].DateDisp+"").trigger('create');
        return false;
    }
});
相关问题