Why Scripts Must Be Included in Index.html When Using jQuery Mobile
Introduction
In jQuery Mobile projects, redirecting pages using $.mobile.changepage() raises confusion. Developers must include all page scripts in the same file, index.html, or else the redirect page will fail to execute functions defined in its header. This article explains the behavior behind this phenomenon.
How jQuery Mobile Handles Page Changes
jQuery Mobile employs Ajax to load subsequent pages. While the first page is loaded normally, subsequent pages only load their body content. Specifically, only the first div with the data-role="page" attribute is incorporated into the DOM, discarding anything else.
Reason for Script Inoperability
In your second page, and subsequent pages, the button is visible due to HTML being rendered normally. However, the click event fails to function because its parent head was disregarded during page transition.
Solution 1: Moving Scripts into Body Content
A quick solution is to move the script tag into the body content of subsequent pages:
<body> <div data-role="page"> // HTML content <script> // JavaScript </script> </div> </body>
Solution 2: Consolidating Scripts in Index.html
A preferred solution is to move all JavaScript into a single file, index.js, placed in the head of the first HTML file:
<head> <meta ...> <link rel="stylesheet" ...> <script src="jquery.mobile-1.2.0.min.js"></script> <script src="index.js"></script> // Your consolidated JavaScript </head>
Reason for Index.html Consolidation
Phonegap, like jQuery Mobile, can exhibit bugs. If all JavaScript is placed in a single HTML file, an error could arise and refresh the current page. If that page lacks the required JavaScript, it will no longer function until restarted.
Realistic Solution
Move the index.js file into the head of all other HTML files. This ensures that scripts are accessible even if other DOM elements are lost due to bugs.
Conclusion
Understanding how jQuery Mobile handles page changes is crucial for successful app development. Consolidating scripts in index.html is a recommended solution for ensuring script availability and preventing potential issues with Phonegap.
The above is the detailed content of Why Do jQuery Mobile Page Scripts Need to Be Included in `index.html`?. For more information, please follow other related articles on the PHP Chinese website!