如何在phonegap应用程序中使用jquerymobile动态加载页脚标签?

reg*_*int 6 iphone jquery xcode jquery-mobile cordova

我在Xcode中使用jQuery Mobile作为我的PhoneGap应用程序.我创建了多个页面,页脚中有标签.它在静态页面中正常工作如下.

<div data-role="footer" data-position="fixed">      
    <div data-id="mainTab" data-role="navbar">
        <ul id="footer_tabs">
            <li><a href="search_page.html" data-transition="slideup" data-icon="search">Search</a></li>
            <li><a href="my_favorite_page.html" data-icon="star" data-transition="slideup">Favorites</a></li>
            <li><a href="my_account_page.html" data-icon="gear" data-transition="slideup">Account</a></li>
            <li><a href="create_ad_page.html" class="ui-state-persist ui-btn-active" data-transition="slideup" data-icon="plus">Create Ad</a></li>
        </ul>
    </div>
<div>
Run Code Online (Sandbox Code Playgroud)

当我尝试根据用户角色加载选项卡时.页面中的HTML代码:

<div data-role="footer" data-position="fixed">      
    <div data-id="mainTab" data-role="navbar">
        <ul id="footer_tabs">
        </ul>
    </div>
<div>
Run Code Online (Sandbox Code Playgroud)

jQuery代码:

$('#footer_tabs').append('<li><a href="search_page.html" data-transition="slideup" data-icon="search">Search</a></li>');
$('#footer_tabs').append('<li><a href="my_favorite_page.html" data-transition="slideup" data-icon="search">Favorite</a></li>');
$('#footer_tabs').append('<li><a href="my_account_page.html" data-transition="slideup" data-icon="search">Account</a></li>');
if(userRole == '3'){
    $('#footer_tabs').append('<li><a href="create_ad_page.html" data-transition="slideup" data-icon="search">Create Ad</a></li>');
}
$('#footer-tabs').listview('refresh');
Run Code Online (Sandbox Code Playgroud)

静态加载图片: 在此输入图像描述

从jQuery加载图片: 在此输入图像描述

我也刷新了清单,但没有工作.我不知道问题是什么.请帮我.

谢谢,-regeint

Jas*_*per 2

我不确定您如何在 jQuery Mobile 框架中添加refresh一个小部件,但我知道您可以删除前一个小部件并插入一个新的小部件:nabvarnavbar

//create an output variable, I used an array
var output = ['<div data-id="mainTab" data-role="navbar"><ul id="footer_tabs">'];

//push items onto the output array
output.push('<li><a href="search_page.html" data-transition="slideup" data-icon="search">Search</a></li>');
output.push('<li><a href="my_favorite_page.html" data-transition="slideup" data-icon="search">Favorite</a></li>');
output.push('<li><a href="my_account_page.html" data-transition="slideup" data-icon="search">Account</a></li>');
if(userRole == '3'){
    output.push('<li><a href="create_ad_page.html" data-transition="slideup" data-icon="search">Create Ad</a></li>');
}
output.push('</ul></div>');

//this last line is important, the output array is being joined into a string, then appended to the footer element,
//also the `create` event is being triggered on the footer element so the jQuery Mobile framework will update the widget with all the necessary styles
$('[data-role="footer"]').html(output.join('')).trigger('create');
Run Code Online (Sandbox Code Playgroud)

这是一个演示:http://jsfiddle.net/ZVGSZ/

请注意,我创建了一个 HTML 字符串数组,然后join将它们组合在一起以对每个 HTML 字符串执行单个操作.append()而不是附加操作 ( .html(string) == (.remove() + .append(string)))。