jquery - jquery mobile 的导航栏中的选择未正确发生

标签 jquery html jquery-mobile

我正在尝试使用 jquery mobile 创建一个带有持久页脚的 html 页面。这是我正在使用的代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta name="viewport" content="width=device-width; initial-scale=1.0" />
        <link rel="stylesheet"  href="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" />
        <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
        <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
    </head>
    <body>
        <div data-role="page" id="home">
            <div data-role="header" data-theme="b">
                <h1>Test</h1>
            </div>
            <div data-role="content" data-theme="b">
                Home Page
            </div>
            <div data-role="footer" data-position="fixed" data-id="pFooter">
                <div data-role="navbar">
                    <ul>
                        <li><a href="#home" data-icon="custom" class="ui-btn-active">Home</a></li>
                        <li><a href="#page2" data-icon="grid">Second page</a></li>
                        <li><a href="#page3" data-icon="star">Third page</a></li>
                    </ul>
                </div>
            </div>    
        </div>
        <div data-role="page" id="page2">
            <div data-role="header" data-theme="b">
                <h1>Test</h1>
            </div>
            <div data-role="content" data-theme="b">
                Second page
            </div>
            <div data-role="footer" data-position="fixed" data-id="pFooter">
                <div data-role="navbar">
                    <ul>
                        <li><a href="#home" data-icon="custom">Home</a></li>
                        <li><a href="#page2" data-icon="grid"  class="ui-btn-active">Second page</a></li>
                        <li><a href="#page3" data-icon="star">Third page</a></li>
                    </ul>
                </div>
            </div>    
        </div>
        <div data-role="page" id="page3">
            <div data-role="header" data-theme="b">
                <h1>Test</h1>
            </div>
            <div data-role="content" data-theme="b">
                Third page
            </div>
            <div data-role="footer" data-position="fixed" data-id="pFooter">
                <div data-role="navbar">
                    <ul>
                        <li><a href="#home" data-icon="custom">Home</a></li>
                        <li><a href="#page2" data-icon="grid">Second page</a></li>
                        <li><a href="#page3" data-icon="star" class="ui-btn-active">Third page</a></li>
                    </ul>
                </div>
            </div>    
        </div>
    </body>
</html>

以下用例说明了我面临的问题

1) 单击导航栏中的第二个按钮。

2) 第二页内容正常显示,第二个按钮保持选中状态。

3) 单击导航栏中的第一个按钮。

4) 首页内容正常,但第一个按钮未处于选中状态

5)再次单击第一个按钮。

6)现在第一个按钮处于选定状态。

您可以在此处查看此操作 - http://jsfiddle.net/tKMgd/

预先感谢您的帮助。

最佳答案

我遇到了这个问题,我知道这不是最漂亮的解决方案,但您可以绑定(bind)到每个页面的 pageshow (或 pagebeforeshow)事件,并让按钮的状态在 pageshow 上发生变化:

$(document).delegate('div[id*="events"]', 'pagebeforeshow',function(event){
    $('#' + $(this).attr('id') + '_link').attr('class','ui-btn-active ui-btn ui-btn-up-a');
});

在此示例中,任何 id 中包含“events”的页面都会使带有该页面 id 加上“_link”(例如“events_link”)的链接处于事件状态。您可以使用与此类似的代码,使每个页面将事件类添加到页脚中的正确链接:

$(document).delegate('#home, #page2, #page3', 'pagebeforeshow',function(event){
    $('#' + $(this).attr('id') + '_link').addClass('ui-btn-active');
});

注意:上述代码示例要求页脚中的链接具有 ID:home_linkpage2_linkpage3_link。这是您的 jsfiddle 的更新版本:http://jsfiddle.net/tKMgd/5/

关于jquery - jquery mobile 的导航栏中的选择未正确发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6569413/

相关文章:

javascript - 后台定位下拉菜单问题

jQuery - 悬停不工作

jquery - 如何调整文本以适应容器而不会溢出 :auto

javascript - jQuery : jqPlot function call won't work properly

javascript - jQuery,很多 child 。有什么更好的方法来做到这一点?

javascript - CKEDITOR getData() 返回 html 字符实体(unicode),但是如何获得未翻译的字符?

jquery - 在 HTML 中找到 Twitter 句柄,然后创建链接

javascript - 给定 viewBox 尺寸和文本样式,如何计算将 svg 文本放入 viewBox 中的翻译?

jquery-mobile - 从 jQuery Mobile 中的可折叠集中删除图标

javascript - 动态创建 div 元素(jQuery 移动页面)