如何在动态添加行后刷新JQuery移动表

时间:2012-02-17 20:03:15

标签: javascript jquery-mobile html-table dynamically-generated

我基于我从服务器获取的JSON字符串向JQ Mobile表添加行。

刷新后第一次进入页面时,没有添加任何样式,但是每次都可以正常工作。

有没有办法像列表视图那样刷新/初始化表格?

以下代码是我添加行的地方:

$.each(result, function() {
    var imgString;

    if(result[i]["status"] == 'Y') {
        imgString = '<img src= images/checkMark.png height=\"40\" width=\"40\" align=\"middle\">';
    } else {
        imgString = '';
    }

    $('#pickupTable > tbody:last').append('<tr><td class=\"tableRow10\">' +  imgString + 
      '<td class=\"tableRow80\"><a><button class=\"selectPickup\" pickupCode = \"'+ 
      result[i]["id"] + '\"> '+ result[i]["address"] +'</button></a></td></tr>');
    i++;
});

$('#pickupTable > tfoot:last').append('<tr><td colspan="5">Total Pick Ups: ' 
  +result.length + '</td></tr>');

2 个答案:

答案 0 :(得分:7)

能够使用: $("#myTable").table("refresh");

但它尚未针对jquery mobile的1.3.0版实现。

请参阅https://github.com/jquery/jquery-mobile/issues/5570

听起来你必须在页面初始化之前添加行,或者在添加行之前不要设置表的属性 data-role =“table”。     $("#myTable").table();

在我正在开发的实现中,我允许用户添加行。对我来说幸运的是,该网站旨在使用更大的移动设备进行查看,因此我可以等待1.3.1

答案 1 :(得分:6)

我建议你使用.trigger('create');并刷新页面,jQM文档:

  

增强新标记
页面插件调度一个pagecreate事件,大多数小部件都使用它来自动初始化自己。只要   当引用widget插件脚本时,它会自动增强   它在页面上找到的小部件的任何实例。

     

但是,如果您通过生成新标记客户端或加载内容   Ajax并将其注入页面,您可以触发create事件   处理其中包含的所有插件的自动初始化   新标记。这可以在任何元素(甚至是页面)上触发   div本身),为您节省了手动初始化每个插件的任务   (列表视图按钮,选择等)。

     

例如,如果加载了一个HTML标记块(比如一个登录表单)   通过Ajax,触发create事件自动转换   它包含的所有小部件(在这种情况下为输入和按钮)   增强版本。此方案的代码为:

$( ...new markup that contains widgets... ).appendTo( ".ui-page" ).trigger( "create" );