我一直试图让这个工作4天,没有运气。Jquery mobile ui-btn-active在导航栏中
我有一个非常简单的jquery移动应用程序。 该应用程序有一个标题,内容和页脚。 页脚正在'pagecreate'事件上动态生成,因为它始终是相同的,我不想在每个页面都有HTML。
所以我做这样的事情:
$(document).delegate('[data-role="page"]', 'pagecreate', function (e) {
DrawHeader($(this));
DrawFooter($(this));
SetFooterEvents($(this));
SetActiveFooter($(this));
});
DrawHeader()和DrawFooter()简单地将页眉div预先写入页面并附加页脚div。 SetFooterEvents()设置页脚导航栏按钮的onclick事件,并且SetActiveFooter()为SUPPOSED以将ui-btn-active设置为当前活动页脚链接。 为此,我已将data-active-footer属性添加到页面div,将data-name属性添加到导航栏元素。我正在根据页面中的数据活动页脚搜索当前元素并应用ui-btn活动类。
function SetActiveFooter(page) {
page.children('div[data-role="footer"]')
.find('a[data-name="' + page
.attr("data-active-footer") + '"]').addClass("ui-btn-active");}
到目前为止好。
现在,假设我已经更改为一个页面并且导航栏亮起(它已成功接收ui-btn-active类),并且我正在点击上一页,导航栏中亮起的项目不会换回来!
如果我再次点击页面(即:更改为第二页[corrent lit],更改回第一页[第二页仍然点亮],然后再次点击第一页),它会点亮导航栏按钮。
我发现当我更改'pagecreate'事件中当前页面的导航栏时,jqm也更改了上一页的导航栏。 我试图用'pageshow'事件来覆盖这种行为,即尝试将ui-btn-active类应用于导航栏中的当前元素,但问题在于$(this)和e.currentTarget对象在'pageshow'事件中不要包含脚手架元素!
$(".ui-page").live('pageshow', function (e) {
alert($(this).children('div').length); // returns 2!
alert($(this).children('div[data-role="footer"]').length); //returns 0
alert($(e.currentTarget).children('div').length); // returns 2!
alert($(e.currentTarget).children('div[data-role="footer"]').length); //returns 0});
任何想法?
谢谢。