2012-02-09 70 views
3

我有以下jQuery Mobile HTML代码,navbar的内容是使用javascript设置的。 jQuery Mobile的样式时,它被设置静态,但是当您以后使用javascript设置它(HTML)的内容,你必须做一些额外的工作,使导航栏它的工作: jQuery Mobile:在更新导航栏时替代.trigger('create')或.page()?

<div data-role="header"> 
     <h1 id="title">App</h1> 
    </div><!-- /header --> 

    <div data-role="content" id="content">  
     <p>Loading...</p> 
    </div><!-- /content --> 

    <div data-role="footer" data-position="fixed"> 
     <div data-role="navbar" id="navbar"> 
      <ul id="menu"> 
      </ul> 
     </div> 
    </div><!-- /footer --> 
</div><!-- /page --> 

trigger('create');一般用于解决使用javascript/ajax设置时未标记的标记问题。 但是,它似乎只工作在data-role="content"而不是#navbar。下面的脚本应该工作,但离开菜单unstyled ...

$(function(){ 
    $("#menu").html("<li><a href='#'>Test Styling</a></li>").trigger('create'); 
}); 

任何想法如何解决这个问题?我试过page();.listview('refresh');没有结果。

回答

4

尝试调用navbar方法追加列表项目后:

$(function(){ 
    $("#menu").html("<li><a href='#'>Test Styling</a></li>"); 
    $("#navbar").navbar(); 
}); 

编辑: 您也可以尝试动态地创建导航栏:

var footer = $("#footer-id"); 

var navBar = $("div", { 
    "data-role":"navbar", 
    "html":"<ul><li><a href='#'>Test Styling</a></li></ul>" 
}).appendTo(footer).navbar(); 
+0

我将在明天再早尝试,但现在它似乎提出了一个错误:'执行'$(“#navbar”)时,没有这样的方法'刷新'navbar widget'。navbar(“刷新”);''和$(“#navbar”)。navbar ();'似乎没有效果。 – bartolsthoorn 2012-02-10 01:16:39

+1

谢谢,它确实有效。 JavaScript执行的具体时刻很重要!必须在DOM明显加载后运行它.. – bartolsthoorn 2012-02-10 10:15:49

+1

嗨,你还需要做什么?这不会为我工作,它不会加载创建dinamically元素的类。 – 2012-06-20 21:58:57