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

时间:2011-12-29 11:10:52

标签: jquery iphone 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>

当我尝试根据用户角色加载标签时。 页面中的HTML代码:

<div data-role="footer" data-position="fixed">      
    <div data-id="mainTab" data-role="navbar">
        <ul id="footer_tabs">
        </ul>
    </div>
<div>

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');

静态加载图片:enter image description here

从jQuery加载图片:enter image description here

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

谢谢, -regeint

2 个答案:

答案 0 :(得分:2)

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

//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');

以下是演示:http://jsfiddle.net/ZVGSZ/

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

答案 1 :(得分:0)

我也没有代表感谢Jasper,但它是一个很好的解决方案。

只是想在这里添加我做的相同并使用空白导航栏进入,所以在html中有一个空白的div:

<div data-role="navbar" data-iconpos="left" id="PageLinks">

然后在剧本中:

$('#PageLinks').html(footerLinks.join('')).trigger('create');

定位它 - 如果人们的文件中有多个页面,则可能会有用。

再次感谢