如何在jquery Mobile中重新呈现动态生成的锚标签?

时间:2012-03-15 19:02:16

标签: jquery ajax jquery-mobile widget refresh

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

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

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