【问题标题】:How do I re-render dynamically generated anchor tags in jquery Mobile?如何在 jquery Mobile 中重新渲染动态生成的锚标记?
【发布时间】:2012-04-01 08:29:26
【问题描述】:

我在 ajax 调用时从服务器获得了一个锚标记 sn-p html。如何“刷新”以便 jquery mobile 可以将必要的类附加到链接?

例如jquery mobile生成的链接有一个ui-link:

<a class="ui-link" href="http://www.google.com">http://www.google.com</a>

如何确保在新生成的锚标记上附加正确的样式?

【问题讨论】:

  • 运行一个函数作为 Ajax 调用的 success 回调的一部分?
  • 你能贴出你的JS代码吗?您具体要尝试refresh 哪些小部件?

标签: jquery ajax jquery-mobile widget refresh


【解决方案1】:

如果你想刷新一个已经初始化的小部件,那么你可以使用它各自的功能来刷新每种类型的小部件:

$('.ui-btn').button('refresh');

注意我使用.ui-btn类来选择按钮元素,这个类是在按钮初始化后添加的,所以你可以确定你正在刷新一个已经初始化的按钮小部件。

文档:http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-methods.html

如果您需要初始化一个尚未初始化的小部件,那么您只需省略'refresh' 或使用.trigger('create')

$('[data-role="button"], button, input[type="button"], input[type="submit"]').not('.ui-btn').button();//or .trigger('create');

注意这里我使用.not('.ui-btn') 省略了已经初始化的小部件,所以这只会初始化未初始化的小部件。如果您尝试初始化已初始化的小部件,则会收到错误消息(如果您尝试刷新尚未初始化的小部件,则同样如此)。

更新

如果您的 HTML 正在由服务器输出,那么您可以在将小部件添加到 DOM 之前对其进行初始化:

$.ajax({
    ...
    success : function (serverResponse) {
        var $out = $(serverResponse);
        //if there is a container with elements inside it, use `.find()`,
        //if all the elements are siblings at the top level then use `.filter()`
        $out.find('a').button();
        $('body').append($out);
    }
});

您还可以使用.buttonMarkup() 函数更新按钮小部件:http://jquerymobile.com/demos/1.1.0-rc.1/docs/buttons/buttons-options.html

【讨论】:

    【解决方案2】:

    这里至少有一种刷新 jQuery Mobile 按钮样式的方法:

    $(yourButtons).button('refresh'); 
    

    文档:http://jquerymobile.com/test/docs/buttons/buttons-types.html

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      相关资源
      最近更新 更多