jquery mobile:navbar不保持活动状态
我有这个导航栏页脚:
问题是按钮在单击时不保持活动状态。 当在所有按钮上将a href
更改为#
时,这确实有效,但当然,这会破坏我的导航。
我已经尝试将ui-state-persist
添加到所有按钮,但这也不起作用。 谁知道如何解决这个问题?
我尝试过的另一件事是:
$(".my_buttons").on( "tap", function() { var id = this.id; nav_state(id); }); function nav_state(button) { $(".my_buttons").removeClass("ui-btn-active",function() { $("#"+button).addClass("ui-btn-active"); }); }
这不起作用……
编辑:显然, removeClass
没有回调。 删除回调不起作用,但……
您需要添加自己的代码,以便在每次页面更改时更新活动按钮。 有不同的方法可以做到这一点,但这是一种方式:
$(document).on( "pagecontainerchange", function() { var current = $( ".ui-page-active" ).prop("id"); // Remove active class from nav buttons $( "[data-role='navbar'] a.ui-btn-active" ).removeClass( "ui-btn-active" ); // Add active class to current nav button $( "[data-role='navbar'] a" ).each(function() { var href = $( this ).prop("href"); if ( href.indexOf(current, href.length - current.length) !== -1 ) { $( this ).addClass( "ui-btn-active" ); } }); });
每次pagecontainer小部件更改页面时,我们都会获取正在显示的页面的ID,然后单击导航栏链接以查看哪个href以此页面ID结尾。
DEMO
您还可以查看使用数据属性的持久性导航栏演示: http : //demos.jquerymobile.com/1.4.5/toolbar-fixed-persistent/
JQuery对象没有名为id()的方法,因此使用属性或属性。
$(this).attr('id');
要么
$(this).prop('id');