0

我正在 JQuery / JQuery Mobile 中建立一个站点。我正在逐页测试。我创建了一个页面,要求用户输入并使用数据库(PHP/MySQL)中的记录自动完成。它就像我想要的那样工作。

但是,当我转到我的索引页面,然后点击指向新页面的链接时,它不再起作用了。有人告诉我,JQuery Mobile 将所有页面视为一个大页面,因此稍后不会加载其他脚本。

这听起来很熟悉吗?我在哪里可以找到更多关于此的文档?我应该如何解决这个问题?创建一个大的 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页面的正文标记的方法或绑定到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 回答