2

我正在使用 jQuery Mobile,我想在用户单击主页上的按钮后将浏览器重定向到另一个页面。为此,我写道:

$.mobile.changePage("album-search-results.html",{
               data:{area:searchArea, value:searchValue},
               transition: "pop"
           });

它工作正常,它加载了正确的页面,甚至在 URL 上放置了正确的值。不幸的是,没有触发 pageshow 事件:

    <!DOCTYPE html>
<html>
<head>


    <meta name="viewport" content="width=device-width, initial-scale=1">

    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
</head>

<body>
    <div data-role = "page" data-theme = "d" id = "SearchResults">

        <div data-role = "header">
            <h1>Aggregator</h1>
        </div>

        <div data-role = "content">

        </div>
    </div>

    <script type="text/javascript">
        $("#SearchResults").on("pageshow",function(event, ui){
            console.log(ui.prevPage);

        });

    </script>
</body>
</html>

当我从上一个页面加载此页面时,控制台始终为空。怎么了?谢谢

4

1 回答 1

4

解决方案

解决方案很简单,将脚本块移动到页面 div 内。在您的情况下,脚本块被丢弃。基本上改成这样:

从 :

<body>
    <div data-role = "page" data-theme = "d" id = "SearchResults">

        <div data-role = "header">
            <h1>Aggregator</h1>
        </div>

        <div data-role = "content">

        </div>
    </div>

    <script type="text/javascript">
        $("#SearchResults").on("pageshow",function(event, ui){
            console.log(ui.prevPage);

        });

    </script>
</body>

至 :

<body>
    <div data-role="page" data-theme="d" id="SearchResults">
        <div data-role = "header">
            <h1>Aggregator</h1>
        </div>
        <div data-role = "content">

        </div>
        <script>
            $(document).on("pageshow","#SearchResults",function(event, ui){
                console.log(ui.prevPage);
            });
        </script>       
    </div>
</body>

例子:

索引.html

<!DOCTYPE html>
<html>
    <head>
        <title>jQM Complex Demo</title>
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>      
        <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>    
        <script>
            $(document).on('click', '#change-page', function(){       
                $.mobile.changePage("album-search-results.html",{
                    data:{area:"asda", value:"1"},
                    transition: "pop"
                });
            });                 
        </script>
    </head>
    <body>
        <div data-role="page" id="index">
            <div data-theme="a" data-role="header">
                <h3>
                    First Page
                </h3>
                <a href="#second" class="ui-btn-right">Next</a>
            </div>

            <div data-role="content">
                <a data-role="button" id="change-page">Change Page</a>
            </div>

            <div data-theme="a" data-role="footer" data-position="fixed">

            </div>
        </div>    
    </body>
</html>   

专辑搜索结果.html

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
</head>
    <body>
        <div data-role="page" data-theme="d" id="SearchResults">
            <div data-role = "header">
                <h1>Aggregator</h1>
            </div>
            <div data-role = "content">

            </div>
            <script>
                $(document).on("pageshow","#SearchResults",function(event, ui){
                    console.log(ui.prevPage);
                });
            </script>       
        </div>
    </body>
</html>
于 2013-04-18T13:09:06.773 回答