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>

例:

index.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 に答える