0

JQuery / JQuery Mobile でサイトを構築しています。ページを1つずつテストしています。ユーザーに入力を求め、データベース (PHP/MySQL) のレコードでオートコンプリートを行うページを作成しました。思った通りに動作します。

しかし、インデックス ページに移動して新しいページへのリンクをたどると、もう機能しません。JQuery Mobile はすべてのページを 1 つの大きなページであるかのように見ているため、後で追加のスクリプトが読み込まれないということを誰かが私に教えてくれました。

これは聞き覚えがありますか? また、これに関する詳細なドキュメントはどこにありますか? これをどのように解決すればよいですか?1 つの大きな JavaScript ファイルを作成し、すべてのページでメイン ファイルから関数を呼び出すようにしますか?

オートコンプリート ページ:

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Autocomplete - Multiple, remote</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
</style>

<script>

$(function()
{
    $("#brands")
        .autocomplete
            ({  
                source: 'getbrands.php',
                minLength:2,
            });

    $("#collection")
        .autocomplete
            ({
                source: 'getcollection.php',
                minLength:2,
            });
});
</script>
</head>
<body>
<form action="search.php" method="post">
Enter your Brand:
<input type="text" id="brands" />

<br />
    Enter your Collection:
<input type="text" id="collection" />

<br />

<input type="submit" value="Search" />

インデックスページ:

<?php
   include_once('inc/checkloginfirst.inc.php');
?>
<!DOCTYPE html> 
<html> 
<head> 
    <title>Web</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="css/jquery.mobile-1.2.1.min.css" />
<script src="script/jquery-1.8.3.min.js"></script>
<script src="script/jquery.mobile-1.2.1.min.js"></script>
    <script src="script/validate.js"></script>
</head> 
<body> 

<div data-role="page">
<div data-role="header">
        <h1>Beta</h1>
</div><!-- /header -->
<div data-role="content">   
    <ul data-role="listview" data-inset="true" data-theme="a">
        <li><a href="m-search.php"><center>Quick Search </center></a></li>
        <li><a href="m-browse.php"><center>Browse </center></a></li>
        <li><a href="brandsearch-test.html"><center>Add new </center></a></li>
        <li><a href="#"><center>User Settings</center></a></li>
    </ul>
   </div><!-- /content -->

    <div data-role="footer" class="ui-bar" data-position="fixed">
        <a href="m-index.php" data-role="button" data-icon="home">Home</a>
        <a href="m-logout.php" data-role="button" data-icon="delete" style="float: right;">Logout</a>            
 </div>
 </div><!-- /page -->

</body>
</html>

ガブリエ

4

1 に答える 1

0

これは確かに正しいです。<body>スクリプトをプルして機能させるには、AJAX を介してプルするページ内にスクリプトを含める必要があります。は<head>、AJAX 読み込みによって完全に無視されます。

そのスクリプト内で関数を初期化する場合はonload、そのページの body タグのメソッドにバインドするか、pageinitたとえばにバインドしてください。

...
    <body onload="initializePreviousReports()">
        <div data-role="page" id="options" data-theme="a">
            <script type="text/javascript">
                $(document).bind('pageinit', initializePreviousReports());
                function initializePreviousReports() {
                    // Some logic here.
                }
            </script>
            <div data-role="header" data-position="fixed" data-tap-toggle="false">
                <h1>Previous Reports</h1>
            </div>
            <!-- /header -->
            <div id="previousReportContainer" data-role="content">Put some content in here.</div>
        </div>
    </body>
...

それが役立つことを願っています。R.

于 2013-08-18T14:58:38.730 に答える