除非刷新,否则链接无法工作

时间:2013-07-01 11:50:07

标签: html jquery-mobile

我目前正在使用JQuery mobile开发移动网站。我在foobar.html使用多个页面进行导航,如下所示:

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="style/jquery.mobile-1.3.1.css" />
    <script src="jquery-js/jquery-1.10.1.js"></script>
    <script src="jquery-js/jquery.mobile-1.3.1.js"></script>
    <title>Foobar</title>
</head>

<body>
    <div data-role="page" id="foo">
        <div data-role="content">
            <a href="#bar" data-role="button">Go to Bar</a>
        </div>
    </div>

    <div data-role="page" id="bar">
        <div data-role="content">
            <p>Bar</p>
        </div>
    </div>
</body>

我加载了foobar.html文件,点击转到栏,它运行正常;但是,当我从index.hmtl导航到foobar.html并再次测试时,链接无法正常工作。刷新页面可以解决问题。

什么可以解释这种行为以及如何解决它?

1 个答案:

答案 0 :(得分:2)

解释

使用 jQuery Mobile 和多个HTML文件时,了解当您从 index.html 转到 {{ 1}} * *将加载第一页。基本上jQuery Mobile将删除页面的其余部分,包括 foobar.html 以及其他 HEAD 内容。

因此,在处理多个 BODY 页面时,只有第一页可以有多个内页,所有其他 HTML 页面都可以 1页。在您的情况下,只有 HTML 页面被加载到DOM中,页面 #foo 被丢弃。

另外,我还有另一个 ARTICLE ,其中描述了 #bar 如何处理多个HTML页面加载。

概念证明

的index.html

jQuery Mobile

的test.html

<!DOCTYPE html>
    <html lang="en">
        <head>
            <!-- META TAGS Declaration -->
            <meta charset="UTF-8">
            <title>TEst</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0;" />
            <meta name="apple-mobile-web-app-capable" content="yes" />
            <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
            <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>              
            <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>  
            <script>
            $(document).on('pagebeforeshow', '#foo', function(){ 
                alert($('#body-test').html());
            });
            </script>           
        </head>

        <body id="body-test">
            <div data-role="page" id="portfolio"  data-add-back-btn="true">             
                <div data-role="content" data-theme='c' >
                    <a href="test.html" data-role="button">Go to Bar</a>
                </div>
            </div><!-- Page Project #1 -->
        </body>     
</html>

如果您运行此示例,它将告诉您(提醒您)仅加载页面#foo。